{"version":3,"file":"static/js/main.1ce1320a.js","mappings":"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MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAA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hF,GAAI++K,EAAUxkH,UAAW,uBAEhF,CAACv1D,GAAc,MAAO,CAAEhF,GAAI++K,EAAUxkH,UAAW,sBACzD,CACA,MAAsB,kBAAXx8D,EACHygL,GAAQxtK,KAAKjT,GACHiH,GAAc,MAAO,CAAEsR,UAAWvY,IACjCksE,WAGDjlE,GAAeu5K,GAAQvtK,KAAKjT,GAAU,QAAU,MAAQ,CAAEuY,UAAWvY,IACpEksE,WAIRlsE,CAEf,CACJ,CA2EA,IAUI6gL,GAAY,CAAEpC,SAAS,IAVC,WACxB,SAASwC,IACT,CAMA,OAJAA,EAAO7/K,UAAUq9K,QAAU,SAAUkC,EAAgBrN,EAAQqL,GAEzD,YADe,IAAXrL,IAAqBA,EAAS,CAAC,GAC5B7pK,GAAOk3K,EAAgBrN,EAClC,EACO2N,CACX,CAT4B,KAUYxC,SC1JpCyC,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEluC,UAAW,OAAQ0oB,SAAU,yBAC/B,CAAE1oB,UAAW,aAAc0oB,SAAU,+BACrC,CAAE1oB,UAAW,QAAS0oB,SAAU,0BAChC,CAAE1oB,UAAW,QAAS0oB,SAAU,0BAChC,CAAE1oB,UAAW,OAAQ0oB,SAAU,qCAE/BylB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAAoC,WACpC,SAASA,IACT,CA0EA,OAzEA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,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,M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UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAAoC,WACpC,SAASA,IACT,CA0EA,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACP/uD,KAAM0uD,GACNh0G,WAAYi0G,IAGxB,EACAE,EAAmBG,SAAW,SAAU7hL,GACpC,IAAIqlG,EAAO/hG,KAAKq+K,iBAEhB,OADar+K,KAAKw+K,eAAez8E,EAAMrlG,EAE3C,EACA0hL,EAAmBI,eAAiB,SAAUz8E,EAAMrlG,GAChDsD,KAAKk+K,YAAcn8E,EAAKu8E,UAAUr0G,WAClCjqE,KAAKi+K,WAAal8E,EAAKu8E,UAAU/uD,KACjCvvH,KAAKy+K,YAAc19K,SAASiD,cAAc,OAC1ChE,KAAKy+K,YAAYnpK,UAAY5Y,EAC7BsD,KAAK0+K,gBACL1+K,KAAK2+K,iBACL3+K,KAAK4+K,iBACL,IAAIC,EAAe7+K,KAAKy+K,YAAYnpK,UAEpC,OADAtV,KAAK8+K,gBACED,EAAa16K,QAAQ,QAAS,IACzC,EACAi6K,EAAmBU,cAAgB,WAG/B,IADA,IAAIC,EAAQ/+K,KAAKy+K,YAAYl4K,SACpB09C,EAAI,EAAGA,EAAI86H,EAAMthL,OAAQwmD,IAE9B,IADA,IAAI+rF,EAAY+uC,EAAM/kG,SAAS/1B,EAAE7lD,WAAY,KAAK6rE,WACzCvsE,EAAI,EAAGA,EAAIsyI,EAAUvyI,OAAQC,IAClCsC,KAAKy+K,Y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,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,QCpWX,SAAWtC,GACP,IAAIuC,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO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kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,4CAEA0C,GAAc,CACd,CAAEluC,UAAW,OAAQ0oB,SAAU,yBAC/B,CAAE1oB,UAAW,aAAc0oB,SAAU,+BACrC,CAAE1oB,UAAW,QAAS0oB,SAAU,0BAChC,CAAE1oB,UAAW,QAAS0oB,SAAU,0BAChC,CAAE1oB,UAAW,OAAQ0oB,SAAU,qCAE/BylB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBC5GA13E,ID8GoC,WACpC,SAAS23E,IACT,CACAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACP/uD,KAAM0uD,GACNh0G,WAAYi0G,IAGxB,EACAE,EAAmBG,SAAW,SAAU7hL,GACpC,IAAIqlG,EAAO/hG,KAAKq+K,iBAEhB,OADar+K,KAAKw+K,eAAez8E,EAAMrlG,EAE3C,EACA0hL,EAAmBI,eAAiB,SAAUz8E,EAAMrlG,GAChDsD,KAAKk+K,YAAcn8E,EAAKu8E,UAAUr0G,WAClCjqE,KAAKi+K,WAAal8E,EAAKu8E,UAAU/uD,KACjCvvH,KAAKy+K,YAAc19K,SAASiD,cAAc,OAC1ChE,KAAKy+K,YAAYnpK,UAAY5Y,EAC7BsD,KAAK0+K,gBACL1+K,KAAK2+K,iBACL3+K,KAAK4+K,iBACL,IAAIC,EAAe7+K,KAAKy+K,YAAYnpK,UAEpC,OADAtV,KAAK8+K,gBACED,EAAa16K,QAAQ,QAAS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O,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,M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AiC,IAAvBpqE,EAAKqb,QAAQ+uD,GAAcq1G,EAAcz/K,EAAM+9K,EAM5G,CCnHA,IAAIsC,GAAwB,WACxB,SAASA,IACT,CAMA,OAJAA,EAAO7/K,UAAUq9K,QAAU,SAAUkC,EAAgBrN,EAAQqL,GAEzD,YADe,IAAXrL,IAAqBA,EAAS,CAAC,GAC5B7pK,GAAOk3K,EAAgBrN,EAClC,EACO2N,CACX,CAT4B,GChJxBC,KD0JuB,IAAID,IAASxC,QC1JvB,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,4CAEA0C,GAAc,CACd,CAAEluC,UAAW,OAAQ0oB,SAAU,yBAC/B,CAAE1oB,UAAW,aAAc0oB,SAAU,+BACrC,CAAE1oB,UAAW,QAAS0oB,SAAU,0BAChC,CAAE1oB,UAAW,QAAS0oB,SAAU,0BAChC,CAAE1oB,UAAW,OAAQ0oB,SAAU,qCAE/BylB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAAoC,WACpC,SAASA,IACT,CA0EA,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACP/uD,KAAM0uD,GACNh0G,WAAYi0G,IAGxB,EACAE,EAAmBG,SAAW,SAAU7hL,GACpC,IAAIqlG,EAAO/hG,KAAKq+K,iBAEhB,OADar+K,KAAKw+K,eAAez8E,EAAMrlG,EAE3C,EACA0hL,EAAmBI,eAAiB,SA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MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAA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AACvI,GAAc,KAAM,CAAEhF,GAAI++K,EAAUxkH,UAAW,uBAEhF,CAACv1D,GAAc,MAAO,CAAEhF,GAAI++K,EAAUxkH,UAAW,sBACzD,CACA,MAAsB,kBAAXx8D,EACHygL,GAAQxtK,KAAKjT,GACHiH,GAAc,MAAO,CAAEsR,UAAWvY,IACjCksE,WAGDjlE,GAAeu5K,GAAQvtK,KAAKjT,GAAU,QAAU,MAAQ,CAAEuY,UAAWvY,IACpEksE,WAIRlsE,CAEf,CACJ,CA2EA,IC3HWivI,GD2HPgyC,GAAwB,WACxB,SAASA,IACT,CAMA,OAJAA,EAAO7/K,UAAUq9K,QAAU,SAAUkC,EAAgBrN,EAAQqL,GAEzD,YADe,IAAXrL,IAAqBA,EAAS,CAAC,GAC5B7pK,GAAOk3K,EAAgBrN,EAClC,EACO2N,CACX,CAT4B,GAUxBJ,GAAY,CAAEpC,SAAS,IAAIwC,IAASxC,SE1JpCyC,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEluC,UAAW,OAAQ0oB,SAAU,yBAC/B,CAAE1oB,UAAW,aAAc0oB,SAAU,+BACrC,CAAE1oB,UAAW,QAAS0oB,SAAU,0BAChC,CAAE1oB,UAAW,QAAS0oB,SAAU,0BAChC,CAAE1oB,UAAW,OAAQ0oB,SAAU,qCAE/BylB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cA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CACJ,EACA05O,EAAej4O,UAAU4gP,kBAAoB,SAAUt+E,GACnDz0B,GAAMynG,eAAehzE,EAAQo0E,gBAAiB70O,KAAKyN,QAASzN,KAAKi5O,kBAAc56L,EAAWr+C,KAAKgE,eAC/FhE,KAAKq6O,gBACT,EACAjE,EAAej4O,UAAU2gP,iBAAmB,SAAUr+E,GAC9CA,EAAQs3E,eACR/3O,KAAKg4O,mBAGLx/E,GAAOx4J,KAAK25O,QACZnhF,GAAOx4J,KAAK05O,UAEpB,EAOAtD,EAAej4O,UAAUo9J,cAAgB,WACrC,MAAO,gBACX,EACAqD,GAAW,CACPnB,GAAS,KACV24E,EAAej4O,UAAW,gBAAY,GACzCygK,GAAW,CACPnB,GAAS,OACV24E,EAAej4O,UAAW,aAAS,GACtCygK,GAAW,CACPnB,IAAWv8G,OAAO24L,YACnBzD,EAAej4O,UAAW,WAAO,GACpCygK,GAAW,CACPnB,GAASv8G,OAAO24L,YACjBzD,EAAej4O,UAAW,WAAO,GACpCygK,GAAW,CACPnB,GAAS,IACV24E,EAAej4O,UAAW,YAAQ,GACrCygK,GAAW,CACPnB,GAAS,OACV24E,EAAej4O,UAAW,aAAS,GACtCygK,GAAW,CACPnB,GAAS,OACV24E,EAAej4O,UAAW,mBAAe,GAC5CygK,GAAW,CACPnB,GAAS,CAAC,IACX24E,EAAej4O,UAAW,sBAAkB,GAC/CygK,GAAW,CACPnB,IAAS,IACV24E,EAAej4O,UAAW,sBAAkB,GAC/CygK,GAAW,CACPnB,IAAS,IACV24E,EAAej4O,UAAW,gBAAY,GACzCygK,GAAW,CACPnB,IAAS,IACV24E,EAAej4O,UAAW,eAAW,GACxCygK,GAAW,CACPnB,IAAS,IACV24E,EAAej4O,UAAW,uBAAmB,GAChDygK,GAAW,CACPnB,IAAS,IACV24E,EAAej4O,UAAW,yBAAqB,GAClDygK,GAAW,CACPnB,GAAS,OACV24E,EAAej4O,UAAW,cAAU,GACvCygK,GAAW,CACPnB,GAAS,OACV24E,EAAej4O,UAAW,gBAAY,GACzCygK,GAAW,CACPnB,GAAS,OACV24E,EAAej4O,UAAW,gBAAY,GACzC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","sources":["../node_modules/@googlemaps/js-api-loader/node_modules/tslib/tslib.es6.js","../node_modules/@googlemaps/js-api-loader/node_modules/fast-deep-equal/index.js","../node_modules/@googlemaps/js-api-loader/src/index.ts","../node_modules/@googlemaps/react-wrapper/dist/index.umd.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/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/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","webpack://project/./src/ContentContainer.module.css?adb8","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/clsx/dist/clsx.m.js","webpack://project/./src/pages/publicPages/home.module.css?a33c","webpack://project/./src/components/home-video.module.css?f40a","../node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../node_modules/@fortawesome/react-fontawesome/index.es.js","../node_modules/@fortawesome/free-solid-svg-icons/index.mjs","components/home-video.jsx","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","webpack://project/./src/components/testimonials/testimonial.module.css?4175","components/testimonials/random-testimonial.jsx","pages/publicPages/home.jsx","webpack://project/./src/components/blog-card.module.css?9e0b","components/blog-card.jsx","webpack://project/./src/pages/publicPages/articles/articles.module.css?dc95","webpack://project/./src/components/loading.module.css?f928","components/loading.jsx","webpack://project/./src/pages/not-found.module.css?f2ac","components/serverError.jsx","pages/publicPages/articles/articles.jsx","webpack://project/./src/pages/publicPages/articles/individual-article.module.css?d53d","pages/not-found.jsx","pages/publicPages/articles/individual-article.jsx","webpack://project/./src/components/scrollbar.module.css?1d70","components/scrollbar.jsx","webpack://project/./src/pages/publicPages/locations/locations.module.css?26e8","../node_modules/@react-google-maps/api/node_modules/tslib/tslib.es6.js","../node_modules/@react-google-maps/api/node_modules/invariant/invariant.js","../node_modules/@react-google-maps/api/src/map-context.ts","../node_modules/@react-google-maps/api/src/utils/helper.ts","../node_modules/@react-google-maps/api/src/utils/foreach.ts","../node_modules/@react-google-maps/api/src/utils/reduce.ts","../node_modules/@react-google-maps/api/src/GoogleMap.tsx","../node_modules/@react-google-maps/api/src/utils/isbrowser.ts","../node_modules/@react-google-maps/api/src/utils/injectscript.ts","../node_modules/@react-google-maps/api/src/utils/prevent-google-fonts.ts","../node_modules/@react-google-maps/api/src/utils/make-load-script-url.ts","../node_modules/@react-google-maps/api/src/LoadScript.tsx","../node_modules/@react-google-maps/api/src/useLoadScript.tsx","../node_modules/@react-google-maps/api/src/LoadScriptNext.tsx","../node_modules/@react-google-maps/api/node_modules/@googlemaps/js-api-loader/dist/index.esm.js","../node_modules/@react-google-maps/api/src/components/maps/TrafficLayer.tsx","../node_modules/@react-google-maps/api/src/components/maps/BicyclingLayer.tsx","../node_modules/@react-google-maps/api/src/components/maps/TransitLayer.tsx","../node_modules/@react-google-maps/api/src/components/drawing/DrawingManager.tsx","../node_modules/@react-google-maps/api/src/components/drawing/Marker.tsx","../node_modules/@react-google-maps/api/node_modules/@react-google-maps/marker-clusterer/dist/esm.js","../node_modules/@react-google-maps/api/src/components/addons/MarkerClusterer.tsx","../node_modules/@react-google-maps/api/node_modules/@react-google-maps/infobox/dist/esm.js","../node_modules/@react-google-maps/api/src/components/addons/InfoBox.tsx","../node_modules/@react-google-maps/api/node_modules/fast-deep-equal/index.js","../node_modules/@react-google-maps/api/node_modules/kdbush/index.js","../node_modules/@react-google-maps/api/node_modules/supercluster/index.js","../node_modules/@react-google-maps/api/node_modules/@googlemaps/markerclusterer/dist/index.esm.js","../node_modules/@react-google-maps/api/src/components/addons/GoogleMarkerClusterer.tsx","../node_modules/@react-google-maps/api/src/components/drawing/InfoWindow.tsx","../node_modules/@react-google-maps/api/src/components/drawing/Polyline.tsx","../node_modules/@react-google-maps/api/src/components/drawing/Polygon.tsx","../node_modules/@react-google-maps/api/src/components/drawing/Rectangle.tsx","../node_modules/@react-google-maps/api/src/components/drawing/Circle.tsx","../node_modules/@react-google-maps/api/src/components/drawing/Data.tsx","../node_modules/@react-google-maps/api/src/components/kml/KmlLayer.tsx","../node_modules/@react-google-maps/api/src/components/dom/dom-helper.ts","../node_modules/@react-google-maps/api/src/components/dom/OverlayView.tsx","../node_modules/@react-google-maps/api/src/components/dom/Overlay.tsx","../node_modules/@react-google-maps/api/src/utils/noop.ts","../node_modules/@react-google-maps/api/src/components/overlays/GroundOverlay.tsx","../node_modules/@react-google-maps/api/src/components/heatmap/HeatmapLayer.tsx","../node_modules/@react-google-maps/api/src/components/streetview/StreetViewPanorama.tsx","../node_modules/@react-google-maps/api/src/components/directions/DirectionsRenderer.tsx","../node_modules/@react-google-maps/api/src/components/streetview/StreetViewService.tsx","../node_modules/@react-google-maps/api/src/components/directions/DirectionsService.tsx","../node_modules/@react-google-maps/api/src/components/places/StandaloneSearchBox.tsx","../node_modules/@react-google-maps/api/src/components/distance-matrix/DistanceMatrixService.tsx","../node_modules/@react-google-maps/api/src/components/places/Autocomplete.tsx","webpack://project/./src/components/map.module.css?6dc6","components/map.jsx","pages/publicPages/locations/locations.jsx","lib/how-help-data.js","webpack://project/./src/pages/publicPages/how-help/how-help.module.css?9ea2","pages/publicPages/how-help/how-help.jsx","webpack://project/./src/pages/publicPages/how-help/individual-help.module.css?6348","pages/publicPages/how-help/individual-help.jsx","lib/faq-data.js","webpack://project/./src/components/faq-item.module.css?72aa","components/faq-item.jsx","webpack://project/./src/pages/publicPages/faq/faq.module.css?6d98","pages/publicPages/faq/faq.jsx","webpack://project/./src/components/footer.module.css?1fc0","components/footer.jsx","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://project/./src/pages/publicPages/contact/contact.module.css?cf30","webpack://project/./src/components/Forms/Input.module.css?a492","components/Forms/Input.js","components/Forms/formBuilder.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","pages/publicPages/contact/contact.jsx","webpack://project/./src/pages/publicPages/telehealth/telehealth.module.css?8f33","pages/publicPages/telehealth/telehealth.jsx","webpack://project/./src/pages/publicPages/careers/careers.module.css?aec1","pages/publicPages/careers/careers.jsx","pages/publicPages/our-team/ourTeamLoading.jsx","webpack://project/./src/pages/adminPages/adminHome.module.css?93c8","pages/adminPages/adminHome.jsx","webpack://project/./src/pages/adminPages/articles/articlesDashboard.module.css?4667","webpack://project/./src/components/Modal/backdrop.module.css?9cba","components/Modal/backdrop.jsx","webpack://project/./src/components/adminComponents/delete-modal.module.css?21b7","components/adminComponents/delete-modal.jsx","pages/adminPages/articles/articlesDashboard.jsx","webpack://project/./src/pages/adminPages/articles/add-article.module.css?3680","services/authService.js","lib/rich-text-settings.js","../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-popups/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/enum.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/classes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/render.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/keyboard.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/view-source.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/interface.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/service-locator.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/services/renderer-factory.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/execute-command-callback.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-filemanager/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/ajax-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/contextMenu-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/details-view-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/navigation-pane-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/search-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/toolbar-settings.js","../node_modules/@syncfusion/ej2-filemanager/src/file-manager/models/upload-settings.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/items.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/toolbar-settings.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/iframe-settings.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/inline-mode.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/models/default-locale.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-attributes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/full-screen.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/enter-key.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/util.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/dialog-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/base/rich-text-editor.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.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-richtexteditor/src/rich-text-editor/richtexteditor.component.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-splitbuttons/src/common/common.js","../node_modules/@syncfusion/ej2-splitbuttons/src/drop-down-button/drop-down-button.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-inputs/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-splitbuttons/src/split-button/split-button.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-inputs/src/slider/slider.js","../node_modules/@syncfusion/ej2-inputs/src/color-picker/color-picker.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/toolbar-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/base-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/dropdown-buttons.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/toolbar-action.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/toolbar.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/util.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/image-module.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/link-module.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/formatter/formatter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/constant.js","../node_modules/@syncfusion/ej2-richtexteditor/src/selection/selection.js","../node_modules/@syncfusion/ej2-richtexteditor/src/common/config.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/dom-node.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/lists.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/insert-methods.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/nodecutter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/formats.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/inserthtml.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/link.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/alignments.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/indents.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/classes.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/image.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/audio.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/video.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/table.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/isformatted.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/selection-commands.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/selection-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/inserthtml-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/clearformat.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/clearformat-exec.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/undo.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/ms-word-clean-up.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/insert-text.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/format-painter-actions.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/base/editor-manager.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/formatter/html-formatter.js","../node_modules/@syncfusion/ej2-richtexteditor/src/editor-manager/plugin/toolbar-status.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-toolbar-status.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/iframe-content-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/color-picker.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/xhtml-validation.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/html-editor.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/base-quick-toolbar.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/renderer/popup-renderer.js","../node_modules/@syncfusion/ej2-richtexteditor/src/rich-text-editor/actions/quick-toolbar.js","pages/adminPages/articles/add-article.jsx","webpack://project/./src/components/UI/BusySpinner.module.css?d749","components/UI/BusySpinner.js","pages/adminPages/articles/edit-article.jsx","pages/adminPages/locations/locationsDashboard.jsx","webpack://project/./src/pages/adminPages/locations/add-location.module.css?f9cf","webpack://project/./src/components/adminComponents/add-state.module.css?266d","components/adminComponents/add-state.jsx","pages/adminPages/locations/add-location.jsx","pages/adminPages/locations/edit-location.jsx","webpack://project/./src/components/account/login-form.module.css?51cf","context/auth-context.js","components/account/login-form.jsx","webpack://project/./src/components/account/logout-form.module.css?e830","components/account/logout-form.jsx","pages/adminPages/account/account.jsx","pages/adminPages/providers/providers-dashboard.jsx","pages/adminPages/providers/add-provider.jsx","pages/adminPages/providers/edit-provider.jsx","components/auth/route-protector.jsx","webpack://project/./src/pages/adminPages/account/forgot-password.module.css?400d","pages/adminPages/account/forgot-password.jsx","webpack://project/./src/pages/adminPages/account/reset-password.module.css?779b","pages/adminPages/account/reset-password.jsx","pages/adminPages/testimonials/testimonialsDashboard.jsx","webpack://project/./src/pages/adminPages/testimonials/testimonial.module.css?4d0a","pages/adminPages/testimonials/add-testimonial.jsx","pages/adminPages/testimonials/edit-testimonial.jsx","ContentContainer.jsx","webpack://project/./src/components/navigation-bar.module.css?2c93","components/navigation-bar.jsx","ScrollToTop.js","App.jsx","reportWebVitals.js","index.jsx"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport isEqual from \"fast-deep-equal\";\n\nexport const DEFAULT_ID = \"__googleMapsScriptId\";\n\n// https://developers.google.com/maps/documentation/javascript/libraries#libraries-for-dynamic-library-import\nexport type Library =\n | \"core\"\n | \"maps\"\n | \"places\"\n | \"geocoding\"\n | \"routes\"\n | \"marker\"\n | \"geometry\"\n | \"elevation\"\n | \"streetView\"\n | \"journeySharing\"\n | \"drawing\"\n | \"visualization\";\n\nexport type Libraries = Library[];\n\n/**\n * The Google Maps JavaScript API\n * [documentation](https://developers.google.com/maps/documentation/javascript/tutorial)\n * is the authoritative source for [[LoaderOptions]].\n/**\n * Loader options\n */\nexport interface LoaderOptions {\n /**\n * See https://developers.google.com/maps/documentation/javascript/get-api-key.\n */\n apiKey: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview.\n */\n channel?: string;\n /**\n * @deprecated See https://developers.google.com/maps/premium/overview, use `apiKey` instead.\n */\n client?: string;\n /**\n * In your application you can specify release channels or version numbers:\n *\n * The weekly version is specified with `version=weekly`. This version is\n * updated once per week, and is the most current.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly'});\n * ```\n *\n * The quarterly version is specified with `version=quarterly`. This version\n * is updated once per quarter, and is the most predictable.\n *\n * ```\n * const loader = Loader({apiKey, version: 'quarterly'});\n * ```\n *\n * The version number is specified with `version=n.nn`. You can choose\n * `version=3.40`, `version=3.39`, or `version=3.38`. Version numbers are\n * updated once per quarter.\n *\n * ```\n * const loader = Loader({apiKey, version: '3.40'});\n * ```\n *\n * If you do not explicitly specify a version, you will receive the\n * weekly version by default.\n */\n version?: string;\n /**\n * The id of the script tag. Before adding a new script, the Loader will check for an existing one.\n */\n id?: string;\n /**\n * When loading the Maps JavaScript API via the URL you may optionally load\n * additional libraries through use of the libraries URL parameter. Libraries\n * are modules of code that provide additional functionality to the main Maps\n * JavaScript API but are not loaded unless you specifically request them.\n *\n * ```\n * const loader = Loader({\n * apiKey,\n * libraries: ['drawing', 'geometry', 'places', 'visualization'],\n * });\n * ```\n *\n * Set the [list of libraries](https://developers.google.com/maps/documentation/javascript/libraries) for more options.\n */\n libraries?: Libraries;\n /**\n * By default, the Maps JavaScript API uses the user's preferred language\n * setting as specified in the browser, when displaying textual information\n * such as the names for controls, copyright notices, driving directions and\n * labels on maps. In most cases, it's preferable to respect the browser\n * setting. However, if you want the Maps JavaScript API to ignore the\n * browser's language setting, you can force it to display information in a\n * particular language when loading the Maps JavaScript API code.\n *\n * For example, the following example localizes the language to Japan:\n *\n * ```\n * const loader = Loader({apiKey, language: 'ja', region: 'JP'});\n * ```\n *\n * See the [list of supported\n * languages](https://developers.google.com/maps/faq#languagesupport). Note\n * that new languages are added often, so this list may not be exhaustive.\n *\n */\n language?: string;\n /**\n * When you load the Maps JavaScript API from maps.googleapis.com it applies a\n * default bias for application behavior towards the United States. If you\n * want to alter your application to serve different map tiles or bias the\n * application (such as biasing geocoding results towards the region), you can\n * override this default behavior by adding a region parameter when loading\n * the Maps JavaScript API code.\n *\n * The region parameter accepts Unicode region subtag identifiers which\n * (generally) have a one-to-one mapping to country code Top-Level Domains\n * (ccTLDs). Most Unicode region identifiers are identical to ISO 3166-1\n * codes, with some notable exceptions. For example, Great Britain's ccTLD is\n * \"uk\" (corresponding to the domain .co.uk) while its region identifier is\n * \"GB.\"\n *\n * For example, the following example localizes the map to the United Kingdom:\n *\n * ```\n * const loader = Loader({apiKey, region: 'GB'});\n * ```\n */\n region?: string;\n /**\n * @deprecated Passing `mapIds` is no longer required in the script tag.\n */\n mapIds?: string[];\n /**\n * Use a custom url and path to load the Google Maps API script.\n */\n url?: string;\n /**\n * Use a cryptographic nonce attribute.\n */\n nonce?: string;\n /**\n * The number of script load retries.\n */\n retries?: number;\n /**\n * Maps JS customers can configure HTTP Referrer Restrictions in the Cloud\n * Console to limit which URLs are allowed to use a particular API Key. By\n * default, these restrictions can be configured to allow only certain paths\n * to use an API Key. If any URL on the same domain or origin may use the API\n * Key, you can set `auth_referrer_policy=origin` to limit the amount of data\n * sent when authorizing requests from the Maps JavaScript API. This is\n * available starting in version 3.46. When this parameter is specified and\n * HTTP Referrer Restrictions are enabled on Cloud Console, Maps JavaScript\n * API will only be able to load if there is an HTTP Referrer Restriction that\n * matches the current website's domain without a path specified.\n */\n authReferrerPolicy?: \"origin\";\n}\n\n/**\n * The status of the [[Loader]].\n */\nexport enum LoaderStatus {\n INITIALIZED,\n LOADING,\n SUCCESS,\n FAILURE,\n}\n\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nexport class Loader {\n private static instance: Loader;\n /**\n * See [[LoaderOptions.version]]\n */\n public readonly version: string;\n /**\n * See [[LoaderOptions.apiKey]]\n */\n public readonly apiKey: string;\n /**\n * See [[LoaderOptions.channel]]\n */\n public readonly channel: string;\n /**\n * See [[LoaderOptions.client]]\n */\n public readonly client: string;\n /**\n * See [[LoaderOptions.id]]\n */\n public readonly id: string;\n /**\n * See [[LoaderOptions.libraries]]\n */\n public readonly libraries: Libraries;\n /**\n * See [[LoaderOptions.language]]\n */\n public readonly language: string;\n\n /**\n * See [[LoaderOptions.region]]\n */\n public readonly region: string;\n\n /**\n * See [[LoaderOptions.mapIds]]\n */\n public readonly mapIds: string[];\n\n /**\n * See [[LoaderOptions.nonce]]\n */\n public readonly nonce: string | null;\n\n /**\n * See [[LoaderOptions.retries]]\n */\n public readonly retries: number;\n\n /**\n * See [[LoaderOptions.url]]\n */\n public readonly url: string;\n /**\n * See [[LoaderOptions.authReferrerPolicy]]\n */\n public readonly authReferrerPolicy: \"origin\";\n\n private callbacks: ((e: ErrorEvent) => void)[] = [];\n private done = false;\n private loading = false;\n private onerrorEvent: ErrorEvent;\n private errors: ErrorEvent[] = [];\n\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({\n apiKey,\n authReferrerPolicy,\n channel,\n client,\n id = DEFAULT_ID,\n language,\n libraries = [],\n mapIds,\n nonce,\n region,\n retries = 3,\n url = \"https://maps.googleapis.com/maps/api/js\",\n version,\n }: LoaderOptions) {\n this.apiKey = apiKey;\n this.authReferrerPolicy = authReferrerPolicy;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.language = language;\n this.libraries = libraries;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.region = region;\n this.retries = retries;\n this.url = url;\n this.version = version;\n\n if (Loader.instance) {\n if (!isEqual(this.options, Loader.instance.options)) {\n throw new Error(\n `Loader must not be called again with different options. ${JSON.stringify(\n this.options\n )} !== ${JSON.stringify(Loader.instance.options)}`\n );\n }\n\n return Loader.instance;\n }\n\n Loader.instance = this;\n }\n\n public get options(): LoaderOptions {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n }\n\n public get status(): LoaderStatus {\n if (this.errors.length) {\n return LoaderStatus.FAILURE;\n }\n if (this.done) {\n return LoaderStatus.SUCCESS;\n }\n if (this.loading) {\n return LoaderStatus.LOADING;\n }\n return LoaderStatus.INITIALIZED;\n }\n\n private get failed(): boolean {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n * @deprecated\n */\n public createUrl(): string {\n let url = this.url;\n\n url += `?callback=__googleMapsCallback`;\n\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n\n if (this.client) {\n url += `&client=${this.client}`;\n }\n\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n\n if (this.language) {\n url += `&language=${this.language}`;\n }\n\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n\n if (this.version) {\n url += `&v=${this.version}`;\n }\n\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n\n if (this.authReferrerPolicy) {\n url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n }\n\n return url;\n }\n\n public deleteScript(): void {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n * @deprecated, use importLibrary() instead.\n */\n public load(): Promise {\n return this.loadPromise();\n }\n\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n * @deprecated, use importLibrary() instead.\n */\n public loadPromise(): Promise {\n return new Promise((resolve, reject) => {\n this.loadCallback((err: ErrorEvent) => {\n if (!err) {\n resolve(window.google);\n } else {\n reject(err.error);\n }\n });\n });\n }\n\n /**\n * See https://developers.google.com/maps/documentation/javascript/reference/top-level#google.maps.importLibrary\n */\n public importLibrary(name: \"core\"): Promise;\n public importLibrary(name: \"maps\"): Promise;\n public importLibrary(name: \"places\"): Promise;\n public importLibrary(\n name: \"geocoding\"\n ): Promise;\n public importLibrary(name: \"routes\"): Promise;\n public importLibrary(name: \"marker\"): Promise;\n public importLibrary(name: \"geometry\"): Promise;\n public importLibrary(\n name: \"elevation\"\n ): Promise;\n public importLibrary(\n name: \"streetView\"\n ): Promise;\n public importLibrary(\n name: \"journeySharing\"\n ): Promise;\n public importLibrary(name: \"drawing\"): Promise;\n public importLibrary(\n name: \"visualization\"\n ): Promise;\n public importLibrary(name: Library): Promise;\n public importLibrary(name: Library): Promise {\n this.execute();\n return google.maps.importLibrary(name);\n }\n\n /**\n * Load the Google Maps JavaScript API script with a callback.\n * @deprecated, use importLibrary() instead.\n */\n public loadCallback(fn: (e: ErrorEvent) => void): void {\n this.callbacks.push(fn);\n this.execute();\n }\n\n /**\n * Set the script on document.\n */\n private setScript(): void {\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n\n const params = {\n key: this.apiKey,\n channel: this.channel,\n client: this.client,\n libraries: this.libraries.length && this.libraries,\n v: this.version,\n mapIds: this.mapIds,\n language: this.language,\n region: this.region,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n // keep the URL minimal:\n Object.keys(params).forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (key) => !(params as any)[key] && delete (params as any)[key]\n );\n\n if (!window?.google?.maps?.importLibrary) {\n // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n // which also sets the base url, the id, and the nonce\n /* eslint-disable */\n ((g) => {\n // @ts-ignore\n let h,\n a,\n k,\n p = \"The Google Maps JavaScript API\",\n c = \"google\",\n l = \"importLibrary\",\n q = \"__ib__\",\n m = document,\n b = window;\n // @ts-ignore\n b = b[c] || (b[c] = {});\n // @ts-ignore\n const d = b.maps || (b.maps = {}),\n r = new Set(),\n e = new URLSearchParams(),\n u = () =>\n // @ts-ignore\n h || (h = new Promise(async (f, n) => {\n await (a = m.createElement(\"script\"));\n a.id = this.id;\n e.set(\"libraries\", [...r] + \"\");\n // @ts-ignore\n for (k in g) e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n e.set(\"callback\", c + \".maps.\" + q);\n a.src = this.url + `?` + e;\n d[q] = f;\n a.onerror = () => (h = n(Error(p + \" could not load.\")));\n // @ts-ignore\n a.nonce = this.nonce || m.querySelector(\"script[nonce]\")?.nonce || \"\";\n m.head.append(a);\n }));\n // @ts-ignore\n d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n })(params);\n /* eslint-enable */\n }\n\n // While most libraries populate the global namespace when loaded via bootstrap params,\n // this is not the case for \"marker\" when used with the inline bootstrap loader\n // (and maybe others in the future). So ensure there is an importLibrary for each:\n const libraryPromises = this.libraries.map((library) =>\n this.importLibrary(library)\n );\n // ensure at least one library, to kick off loading...\n if (!libraryPromises.length) {\n libraryPromises.push(this.importLibrary(\"core\"));\n }\n Promise.all(libraryPromises).then(\n () => this.callback(),\n (error) => {\n const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n this.loadErrorCallback(event);\n }\n );\n }\n\n /**\n * Reset the loader state.\n */\n private reset(): void {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n\n private resetIfRetryingFailed(): void {\n if (this.failed) {\n this.reset();\n }\n }\n\n private loadErrorCallback(e: ErrorEvent): void {\n this.errors.push(e);\n\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * 2 ** this.errors.length;\n\n console.error(\n `Failed to load Google Maps script, retrying in ${delay} ms.`\n );\n\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n } else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n\n private callback(): void {\n this.done = true;\n this.loading = false;\n\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n\n this.callbacks = [];\n }\n\n private execute(): void {\n this.resetIfRetryingFailed();\n\n if (this.done) {\n this.callback();\n } else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\n \"Google Maps already loaded outside @googlemaps/js-api-loader.\" +\n \"This may result in undesirable behavior as options and script parameters may not match.\"\n );\n this.callback();\n return;\n }\n\n if (this.loading) {\n // do nothing but wait\n } else {\n this.loading = true;\n\n this.setScript();\n }\n }\n }\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@googlemaps/js-api-loader'), require('react')) :\n typeof define === 'function' && define.amd ? define(['exports', '@googlemaps/js-api-loader', 'react'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Loader = {}, global.jsApiLoader, global.React));\n})(this, (function (exports, jsApiLoader, React) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var React__default = /*#__PURE__*/_interopDefaultLegacy(React);\n\n /**\n * Copyright 2021 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n exports.Status = void 0;\n (function (Status) {\n Status[\"LOADING\"] = \"LOADING\";\n Status[\"FAILURE\"] = \"FAILURE\";\n Status[\"SUCCESS\"] = \"SUCCESS\";\n })(exports.Status || (exports.Status = {}));\n /**\n * A component to wrap the loading of the Google Maps JavaScript API.\n *\n * ```\n * import { Wrapper } from '@googlemaps/react-wrapper';\n *\n * const MyApp = () => (\n * \t\n * \t\t\n * \t\n * );\n * ```\n *\n * @param props\n */\n const Wrapper = ({ children, render, callback, ...options }) => {\n const [status, setStatus] = React.useState(exports.Status.LOADING);\n React.useEffect(() => {\n const loader = new jsApiLoader.Loader(options);\n const setStatusAndExecuteCallback = (status) => {\n if (callback)\n callback(status, loader);\n setStatus(status);\n };\n setStatusAndExecuteCallback(exports.Status.LOADING);\n loader.load().then(() => setStatusAndExecuteCallback(exports.Status.SUCCESS), () => setStatusAndExecuteCallback(exports.Status.FAILURE));\n }, []);\n if (status === exports.Status.SUCCESS && children)\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null, children);\n if (render)\n return render(status);\n return React__default[\"default\"].createElement(React__default[\"default\"].Fragment, null);\n };\n\n exports.Wrapper = Wrapper;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\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","/**\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\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(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=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(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 Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();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=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(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&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(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 Sj(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 Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(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 Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(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(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(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);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(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=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(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}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\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 return target;\n}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\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 return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _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}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\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}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\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 if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(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 && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(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 (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\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 _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\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}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = 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};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"134\":\"e4945e2c\",\"988\":\"c8de50e3\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + \"b58d7215\" + \".chunk.css\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"project:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"134\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkproject\"] = self[\"webpackChunkproject\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { warning, invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on
,\n * useSubmit(), , etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | DataFunctionValue;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | DataFunctionValue;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n DataResult,\n DeferredData,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n DetectErrorBoundaryFunction,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n ShouldRevalidateFunction,\n RouteManifest,\n ImmutableRouteKey,\n ActionFunction,\n LoaderFunction,\n V7_MutationFormMethod,\n V7_FormMethod,\n HTMLFormMethod,\n MutationFormMethod,\n MapRoutePropertiesFunction,\n} from \"./utils\";\nimport {\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_normalizeFormMethod: boolean;\n v7_prependBasename: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n v7_prependBasename: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n });\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath })\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error);\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher = getSubmittingFetcher(submission, existingFetcher);\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n let loadingFetcher = getLoadingFetcher(submission);\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n submission,\n isFetchActionRedirect: true,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher = getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n // Check if this an absolute external redirect that goes to a new origin\n if (ABSOLUTE_URL_REGEX.test(redirect.location) && isBrowser) {\n let url = init.history.createURL(redirect.location);\n let isDifferentBasename = stripBasename(url.pathname, basename) == null;\n\n if (routerWindow.location.origin !== url.origin || isDifferentBasename) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let activeSubmission =\n submission || getSubmissionFromNavigation(state.navigation);\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else if (isFetchActionRedirect) {\n // For a fetch action redirect, we kick off a new loading navigation\n // without the fetcher submission, but we send it along for shouldRevalidate\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: getLoadingNavigation(redirectLocation),\n fetcherSubmission: activeSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a submission, we will preserve it through the redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n activeSubmission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => createUseMatchesMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId != null && relative !== \"path\") {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route. When using relative:path,\n // fromRouteId is ignored since that is always relative to the current\n // location path\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getPathContributingMatches(contextualMatches).map((m) => m.pathnameBase),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: RouterNavigateOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: Parameters[0]\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let values = await Promise.all([\n runHandler(handler),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n \" _hasFetcherDoneAnything \": true,\n };\n return fetcher;\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n IDLE_BLOCKER,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

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

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

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n errorElement = match.route.errorElement || defaultErrorElement;\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n To,\n LazyRouteFunction,\n RelativeRoutingType,\n RouterState,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n RouteContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n useRoutesImpl,\n useLocation,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n future?: FutureConfig;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n let setState = React.useCallback(\n (newState: RouterState) => {\n v7_startTransition && startTransitionImpl\n ? startTransitionImpl(() => setStateImpl(newState))\n : setStateImpl(newState);\n },\n [setStateImpl, v7_startTransition]\n );\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a ' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\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 if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n 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 /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '21';\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 ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjE=\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + '
Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\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 // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n 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 if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string} 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 // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix) ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\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 if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n 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 /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '21';\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 ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjE=\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\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 // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n 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 if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string} 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 // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== \"true\" && str !== \"false\") ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+= 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 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","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'oncanplay',\n 'oncanplaythrough',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeypress',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onstart',\n 'onpropertychange',\n 'oncopy',\n 'ontoggle',\n 'onpointerout',\n 'onpointermove',\n 'onpointerleave',\n 'onpointerenter',\n 'onpointerrawupdate',\n 'onpointerover',\n 'onbeforecopy',\n 'onbeforecut',\n 'onbeforeinput'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n SanitizeHtmlHelper.sanitize = function (value) {\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue.replace('&', '&');\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[parseInt(j.toString(), 10)].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[parseInt(j.toString(), 10)].removeAttribute(attribute[parseInt(i.toString(), 10)].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var 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 var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","/**\n * @hidden\n\n */\nexport var created = 'create';\n/**\n * @hidden\n\n */\nexport var destroyed = 'destroy';\n/**\n * @hidden\n\n */\nexport var tableclass = 'tableclass';\n/**\n * @hidden\n\n */\nexport var load = 'load';\n/**\n * Specifies Rich Text Editor internal events\n */\n/**\n * @hidden\n\n */\nexport var initialLoad = 'initial-load';\n/**\n * @hidden\n\n */\nexport var contentChanged = 'content-changed';\n/**\n * @hidden\n\n */\nexport var initialEnd = 'initial-end';\n/**\n * @hidden\n\n */\nexport var iframeMouseDown = 'iframe-click';\n/**\n * @hidden\n\n */\nexport var destroy = 'destroy';\n/**\n * @hidden\n\n */\nexport var toolbarClick = 'toolbarClick';\n/**\n * @hidden\n\n */\nexport var toolbarRefresh = 'toolbar-refresh';\n/**\n * @hidden\n\n */\nexport var refreshBegin = 'refresh-begin';\n/**\n * @hidden\n\n */\nexport var toolbarUpdated = 'toolbar-updated';\n/**\n * @hidden\n\n */\nexport var bindOnEnd = 'bind-on-end';\n/**\n * @hidden\n\n */\nexport var renderColorPicker = 'render-color-picker';\n/**\n * @hidden\n\n */\nexport var htmlToolbarClick = 'html-toolbar-click';\n/**\n * @hidden\n\n */\nexport var markdownToolbarClick = 'markdown-toolbar-click';\n/**\n * @hidden\n\n */\nexport var destroyColorPicker = 'destroy-color-picker';\n/**\n * @hidden\n\n */\nexport var modelChanged = 'model-changed';\n/**\n * @hidden\n\n */\nexport var tableModulekeyUp = 'tableModulekeyUp';\n/**\n * @hidden\n\n */\nexport var keyUp = 'keyUp';\n/**\n * @hidden\n\n */\nexport var keyDown = 'keyDown';\n/**\n * @hidden\n\n */\nexport var mouseUp = 'mouseUp';\n/**\n * @hidden\n\n */\nexport var toolbarCreated = 'toolbarCreated';\n/**\n * @hidden\n\n */\nexport var toolbarRenderComplete = 'toolbarRenderComplete';\n/**\n * @hidden\n\n */\nexport var enableFullScreen = 'enableFullScreen';\n/**\n * @hidden\n\n */\nexport var disableFullScreen = 'disableFullScreen';\n/**\n * @hidden\n\n */\nexport var dropDownSelect = 'dropDownSelect';\n/**\n * @hidden\n\n */\nexport var beforeDropDownItemRender = 'beforeDropDownItemRender';\n/**\n * @hidden\n\n */\nexport var execCommandCallBack = 'execCommandCallBack';\n/**\n * @hidden\n\n */\nexport var imageToolbarAction = 'image-toolbar-action';\n/**\n * @hidden\n\n */\nexport var audioToolbarAction = 'audio-toolbar-action';\n/**\n * @hidden\n\n */\nexport var videoToolbarAction = 'video-toolbar-action';\n/**\n * @hidden\n\n */\nexport var linkToolbarAction = 'link-toolbar-action';\n/**\n * @hidden\n\n */\nexport var windowResize = 'resize';\n/**\n * @hidden\n\n */\nexport var resizeStart = 'resizeStart';\n/**\n * @hidden\n\n */\nexport var onResize = 'resizing';\n/**\n * @hidden\n\n */\nexport var resizeStop = 'resizeStop';\n/**\n * @hidden\n\n */\nexport var undo = 'undo';\n/**\n * @hidden\n\n */\nexport var redo = 'redo';\n/**\n * @hidden\n\n */\nexport var insertLink = 'insertLink';\n/**\n * @hidden\n\n */\nexport var unLink = 'unLink';\n/**\n * @hidden\n\n */\nexport var editLink = 'editLink';\n/**\n * @hidden\n\n */\nexport var openLink = 'openLink';\n/**\n * @hidden\n\n */\nexport var actionBegin = 'actionBegin';\n/**\n * @hidden\n\n */\nexport var actionComplete = 'actionComplete';\n/**\n * @hidden\n\n */\nexport var updatedToolbarStatus = 'updatedToolbarStatus';\n/**\n * @hidden\n\n */\nexport var actionSuccess = 'actionSuccess';\n/**\n * @hidden\n\n */\nexport var updateToolbarItem = 'updateToolbarItem';\n/**\n * @hidden\n\n */\nexport var insertImage = 'insertImage';\n/**\n * @hidden\n\n */\nexport var insertAudio = 'insertAudio';\n/**\n * @hidden\n\n */\nexport var insertVideo = 'insertVideo';\n/**\n * @hidden\n\n */\nexport var insertCompleted = 'insertCompleted';\n/**\n * @hidden\n\n */\nexport var imageLeft = 'justifyLeft';\n/**\n * @hidden\n\n */\nexport var imageRight = 'justifyRight';\n/**\n * @hidden\n\n */\nexport var imageCenter = 'justifyCenter';\n/**\n * @hidden\n\n */\nexport var imageBreak = 'break';\n/**\n * @hidden\n\n */\nexport var imageInline = 'inline';\n/**\n * @hidden\n\n */\nexport var imageLink = 'insertImgLink';\n/**\n * @hidden\n\n */\nexport var imageAlt = 'imgAltText';\n/**\n * @hidden\n\n */\nexport var imageDelete = 'delete';\n/**\n * @hidden\n\n */\nexport var audioDelete = 'delete';\n/**\n * @hidden\n\n */\nexport var videoDelete = 'delete';\n/**\n * @hidden\n\n */\nexport var imageCaption = 'caption';\n/**\n * @hidden\n\n */\nexport var imageSize = 'imageSize';\n/**\n * @hidden\n\n */\nexport var videoSize = 'videoSize';\n/**\n * @hidden\n\n */\nexport var sourceCode = 'sourceCode';\n/**\n * @hidden\n\n */\nexport var updateSource = 'updateSource';\n/**\n * @hidden\n\n */\nexport var toolbarOpen = 'toolbarOpen';\n/**\n * @hidden\n\n */\nexport var beforeDropDownOpen = 'beforeDropDownOpen';\n/**\n * @hidden\n\n */\nexport var selectionSave = 'selection-save';\n/**\n * @hidden\n\n */\nexport var selectionRestore = 'selection-restore';\n/**\n * @hidden\n\n */\nexport var expandPopupClick = 'expandPopupClick';\n/**\n * @hidden\n\n */\nexport var count = 'count';\n/**\n * @hidden\n\n */\nexport var contentFocus = 'contentFocus';\n/**\n * @hidden\n\n */\nexport var contentBlur = 'contentBlur';\n/**\n * @hidden\n\n */\nexport var mouseDown = 'mouseDown';\n/**\n * @hidden\n\n */\nexport var sourceCodeMouseDown = 'sourceCodeMouseDown';\n/**\n * @hidden\n\n */\nexport var editAreaClick = 'editAreaClick';\n/**\n * @hidden\n\n */\nexport var scroll = 'scroll';\n/**\n * @hidden\n\n */\nexport var contentscroll = 'contentscroll';\n/**\n * @hidden\n\n */\nexport var colorPickerChanged = 'colorPickerChanged';\n/**\n * @hidden\n\n */\nexport var tableColorPickerChanged = 'tableColorPickerChanged';\n/**\n * @hidden\n\n */\nexport var focusChange = 'focusChange';\n/**\n * @hidden\n\n */\nexport var selectAll = 'selectAll';\n/**\n * @hidden\n\n */\nexport var selectRange = 'selectRange';\n/**\n * @hidden\n\n */\nexport var getSelectedHtml = 'getSelectedHtml';\n/**\n * @hidden\n\n */\nexport var renderInlineToolbar = 'renderInlineToolbar';\n/**\n * @hidden\n\n */\nexport var paste = 'paste-content';\n/**\n * @hidden\n\n */\nexport var imgModule = 'imageModule';\n/**\n * @hidden\n\n */\nexport var rtlMode = 'rtl-mode';\n/**\n * @hidden\n\n */\nexport var createTable = 'createTable';\n/**\n * @hidden\n\n */\nexport var docClick = 'docClick';\n/**\n * @hidden\n\n */\nexport var tableToolbarAction = 'table-toolbar-action';\n/**\n * @hidden\n\n */\nexport var checkUndo = 'checkUndoStack';\n/**\n * @hidden\n\n */\nexport var readOnlyMode = 'readOnlyMode';\n/**\n * @hidden\n\n */\nexport var moduleDestroy = 'moduleDestroy';\n/**\n * @hidden\n\n */\nexport var pasteClean = 'pasteClean';\n/**\n * @hidden\n\n */\nexport var enterHandler = 'enterHandler';\n/**\n * @hidden\n\n */\nexport var beforeDialogOpen = 'beforeDialogOpen';\n/**\n * @hidden\n\n */\nexport var clearDialogObj = 'clearDialogObj';\n/**\n * @hidden\n\n */\nexport var dialogOpen = 'dialogOpen';\n/**\n * @hidden\n\n */\nexport var beforeDialogClose = 'beforeDialogClose';\n/**\n * @hidden\n\n */\nexport var dialogClose = 'dialogClose';\n/**\n * @hidden\n\n */\nexport var beforeQuickToolbarOpen = 'beforeQuickToolbarOpen';\n/**\n * @hidden\n\n */\nexport var quickToolbarOpen = 'quickToolbarOpen';\n/**\n * @hidden\n\n */\nexport var quickToolbarClose = 'quickToolbarClose';\n/**\n * @hidden\n\n */\nexport var popupHide = 'popupHide';\n/**\n * @hidden\n\n */\nexport var imageSelected = 'imageSelected';\n/**\n * @hidden\n\n */\nexport var imageUploading = 'imageUploading';\n/**\n * @hidden\n\n */\nexport var imageUploadSuccess = 'imageUploadSuccess';\n/**\n * @hidden\n\n */\nexport var imageUploadFailed = 'imageUploadFailed';\n/**\n * @hidden\n\n */\nexport var imageRemoving = 'imageRemoving';\n/**\n * @hidden\n\n */\nexport var fileSelected = 'fileSelected';\n/**\n * @hidden\n\n */\nexport var fileUploading = 'fileUploading';\n/**\n * @hidden\n\n */\nexport var fileUploadSuccess = 'fileUploadSuccess';\n/**\n * @hidden\n\n */\nexport var fileUploadFailed = 'fileUploadFailed';\n/**\n * @hidden\n\n */\nexport var fileRemoving = 'fileRemoving';\n/**\n * @hidden\n\n */\nexport var afterImageDelete = 'afterImageDelete';\n/**\n * @hidden\n\n */\nexport var afterMediaDelete = 'afterMediaDelete';\n/**\n * @hidden\n\n */\nexport var drop = 'drop';\n/**\n * @hidden\n\n */\nexport var xhtmlValidation = 'xhtmlValidation';\n/**\n * @hidden\n\n */\nexport var beforeImageUpload = 'beforeImageUpload';\n/**\n * @hidden\n\n */\nexport var beforeFileUpload = 'beforeFileUpload';\n/**\n * @hidden\n\n */\nexport var resizeInitialized = 'resizeInitialized';\n/**\n * @hidden\n\n */\nexport var renderFileManager = 'renderFileManager';\n/**\n * @hidden\n\n */\nexport var beforeImageDrop = 'beforeImageDrop';\n/**\n * @hidden\n\n */\nexport var dynamicModule = 'dynamicModule';\n/**\n * @hidden\n\n */\nexport var beforePasteCleanup = 'beforePasteCleanup';\n/**\n * @hidden\n\n */\nexport var afterPasteCleanup = 'afterPasteCleanup';\n/**\n * @hidden\n\n */\nexport var updateTbItemsStatus = 'updateTbItemsStatus';\n/**\n * @hidden\n\n */\nexport var showLinkDialog = 'showLinkDialog';\n/**\n * @hidden\n\n */\nexport var closeLinkDialog = 'closeLinkDialog';\n/**\n * @hidden\n\n */\nexport var showImageDialog = 'showImageDialog';\n/**\n * @hidden\n\n */\nexport var showAudioDialog = 'showAudioDialog';\n/**\n * @hidden\n\n */\nexport var showVideoDialog = 'showVideoDialog';\n/**\n * @hidden\n\n */\nexport var closeImageDialog = 'closeImageDialog';\n/**\n * @hidden\n\n */\nexport var closeAudioDialog = 'closeAudioDialog';\n/**\n * @hidden\n\n */\nexport var closeVideoDialog = 'closeVideoDialog';\n/**\n * @hidden\n\n */\nexport var showTableDialog = 'showTableDialog';\n/**\n * @hidden\n\n */\nexport var closeTableDialog = 'closeTableDialog';\n/**\n * @hidden\n\n */\nexport var bindCssClass = 'closeTableDialog';\n/**\n * @hidden\n\n */\nexport var formatPainterClick = 'formatPainterClick';\n/**\n * @hidden\n\n */\nexport var formatPainterDoubleClick = 'formatPainterDoubleClick';\n/**\n * @hidden\n\n */\nexport var blockEmptyNodes = \"address:empty, article:empty, aside:empty, blockquote:empty,\\n details:empty, dd:empty, div:empty, dl:empty, dt:empty, fieldset:empty, footer:empty,form:empty, h1:empty,\\n h2:empty, h3:empty, h4:empty, h5:empty, h6:empty, header:empty, hgroup:empty, li:empty, main:empty, nav:empty,\\n noscript:empty, output:empty, p:empty, pre:empty, section:empty, td:empty, th:empty\";\n/**\n * @hidden\n\n */\nexport var inlineEmptyNodes = \"a:empty, abbr:empty, acronym:empty, b:empty, bdi:empty, bdo:empty, big:empty, button:empty,\\ncanvas:empty, cite:empty, code:empty, data:empty, datalist:empty, del:empty, dfn:empty, em:empty, font:empty, i:empty, iframe:empty,\\nins:empty, kbd:empty, label:empty, map:empty, mark:empty, meter:empty, noscript:empty, object:empty, output:empty, picture:empty, progress:empty,\\nq:empty, ruby:empty, s:empty, samp:empty, script:empty, select:empty, slot:empty, small:empty, span:empty, strong:empty, strike:empty, sub:empty, sup:empty, svg:empty,\\ntemplate:empty, textarea:empty, time:empty, u:empty, tt:empty, var:empty, wbr:empty\";\n","/**\n * Defines types of Render\n *\n * @hidden\n\n */\nexport var RenderType;\n(function (RenderType) {\n /* eslint-disable */\n /** Defines RenderType as Toolbar */\n RenderType[RenderType[\"Toolbar\"] = 0] = \"Toolbar\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Popup */\n RenderType[RenderType[\"Popup\"] = 2] = \"Popup\";\n /** Defines RenderType as LinkToolbar */\n RenderType[RenderType[\"LinkToolbar\"] = 3] = \"LinkToolbar\";\n /** Defines RenderType as TextToolbar */\n RenderType[RenderType[\"TextToolbar\"] = 4] = \"TextToolbar\";\n /** Defines RenderType as ImageToolbar */\n RenderType[RenderType[\"ImageToolbar\"] = 5] = \"ImageToolbar\";\n /** Defines RenderType as AudioToolbar */\n RenderType[RenderType[\"AudioToolbar\"] = 6] = \"AudioToolbar\";\n /** Defines RenderType as AudioToolbar */\n RenderType[RenderType[\"VideoToolbar\"] = 7] = \"VideoToolbar\";\n /** Defines RenderType as InlineToolbar */\n RenderType[RenderType[\"InlineToolbar\"] = 8] = \"InlineToolbar\";\n /** Defines RenderType as TableToolbar */\n RenderType[RenderType[\"TableToolbar\"] = 9] = \"TableToolbar\";\n /* eslint-enable */\n})(RenderType || (RenderType = {}));\n/**\n * Defines types to be used as Toolbar.\n */\nexport var ToolbarType;\n(function (ToolbarType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n ToolbarType[\"Expand\"] = \"Expand\";\n /** Defines ToolbarType as MultiRow */\n ToolbarType[\"MultiRow\"] = \"MultiRow\";\n /** Defines ToolbarType as Scrollable */\n ToolbarType[\"Scrollable\"] = \"Scrollable\";\n /* eslint-enable */\n})(ToolbarType || (ToolbarType = {}));\n/**\n * Defines the type of dialog, which open or close in the Rich Text Editor.\n */\nexport var DialogType;\n(function (DialogType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n DialogType[\"InsertLink\"] = \"InsertLink\";\n /** Defines ToolbarType as MultiRow */\n DialogType[\"InsertImage\"] = \"InsertImage\";\n /** Defines DialogType as Audio*/\n DialogType[\"InsertAudio\"] = \"InsertAudio\";\n /** Defines DialogType as Video*/\n DialogType[\"InsertVideo\"] = \"InsertVideo\";\n /** Defines ToolbarType as Scrollable */\n DialogType[\"InsertTable\"] = \"InsertTable\";\n /* eslint-enable */\n})(DialogType || (DialogType = {}));\n","/**\n * Rich Text Editor classes defined here.\n */\n/**\n * @hidden\n\n */\nexport var CLS_RTE = 'e-richtexteditor';\n/**\n * @hidden\n\n */\nexport var CLS_RTL = 'e-rtl';\n/**\n * @hidden\n\n */\nexport var CLS_CONTENT = 'e-content';\n/**\n * @hidden\n\n */\nexport var CLS_DISABLED = 'e-disabled';\n/**\n * @hidden\n\n */\nexport var CLS_SCRIPT_SHEET = 'rte-iframe-script-sheet';\n/**\n * @hidden\n\n */\nexport var CLS_STYLE_SHEET = 'rte-iframe-style-sheet';\n/**\n * @hidden\n\n */\nexport var CLS_TOOLBAR = 'e-rte-toolbar';\n/**\n * @hidden\n\n */\nexport var CLS_TB_FIXED = 'e-rte-tb-fixed';\n/**\n * @hidden\n\n */\nexport var CLS_TB_FLOAT = 'e-rte-tb-float';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ABS_FLOAT = 'e-rte-tb-abs-float';\n/**\n * @hidden\n\n */\nexport var CLS_INLINE = 'e-rte-inline';\n/**\n * @hidden\n\n */\nexport var CLS_TB_INLINE = 'e-rte-tb-inline';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_EXPAND_TB = 'e-rte-tb-expand';\n/**\n * @hidden\n\n */\nexport var CLS_FULL_SCREEN = 'e-rte-full-screen';\n/**\n * @hidden\n\n */\nexport var CLS_QUICK_TB = 'e-rte-quick-toolbar';\n/**\n * @hidden\n\n */\nexport var CLS_POP = 'e-rte-pop';\n/**\n * @hidden\n\n */\nexport var CLS_TB_STATIC = 'e-tb-static';\n/**\n * @hidden\n\n */\nexport var CLS_QUICK_POP = 'e-rte-quick-popup';\n/**\n * @hidden\n\n */\nexport var CLS_QUICK_DROPDOWN = 'e-quick-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_IMAGE_POP = 'e-rte-image-popup';\n/**\n * @hidden\n\n */\nexport var CLS_INLINE_POP = 'e-rte-inline-popup';\n/**\n * @hidden\n\n */\nexport var CLS_INLINE_DROPDOWN = 'e-rte-inline-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_POPUP = 'e-rte-dropdown-popup';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_ICONS = 'e-rte-dropdown-icons';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_ITEMS = 'e-rte-dropdown-items';\n/**\n * @hidden\n\n */\nexport var CLS_DROPDOWN_BTN = 'e-rte-dropdown-btn';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_CONTENT = 'e-rte-content';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ITEM = 'e-toolbar-item';\n/**\n * @hidden\n\n */\nexport var CLS_TB_EXTENDED = 'e-toolbar-extended';\n/**\n * @hidden\n\n */\nexport var CLS_TB_WRAP = 'e-toolbar-wrapper';\n/**\n * @hidden\n\n */\nexport var CLS_POPUP = 'e-popup';\n/**\n * @hidden\n\n */\nexport var CLS_SEPARATOR = 'e-separator';\n/**\n * @hidden\n\n */\nexport var CLS_MINIMIZE = 'e-minimize';\n/**\n * @hidden\n\n */\nexport var CLS_MAXIMIZE = 'e-maximize';\n/**\n * @hidden\n\n */\nexport var CLS_BACK = 'e-back';\n/**\n * @hidden\n\n */\nexport var CLS_SHOW = 'e-show';\n/**\n * @hidden\n\n */\nexport var CLS_HIDE = 'e-hide';\n/**\n * @hidden\n\n */\nexport var CLS_VISIBLE = 'e-visible';\n/**\n * @hidden\n\n */\nexport var CLS_FOCUS = 'e-focused';\n/**\n * @hidden\n\n */\nexport var CLS_RM_WHITE_SPACE = 'e-remove-white-space';\n/**\n * @hidden\n\n */\nexport var CLS_IMGRIGHT = 'e-imgright';\n/**\n * @hidden\n\n */\nexport var CLS_IMGLEFT = 'e-imgleft';\n/**\n * @hidden\n\n */\nexport var CLS_IMGCENTER = 'e-imgcenter';\n/**\n * @hidden\n\n */\nexport var CLS_IMGBREAK = 'e-imgbreak';\n/**\n * @hidden\n\n */\nexport var CLS_AUDIOBREAK = 'e-audio-break';\n/**\n * @hidden\n\n */\nexport var CLS_CLICKELEM = 'e-clickelem';\n/**\n * @hidden\n\n */\nexport var CLS_VID_CLICK_ELEM = 'e-video-clickelem';\n/**\n * @hidden\n\n */\nexport var CLS_AUDIOWRAP = 'e-audio-wrap';\n/**\n * @hidden\n\n */\nexport var CLS_VIDEOWRAP = 'e-video-wrap';\n/**\n * @hidden\n\n */\nexport var CLS_VIDEOBREAK = 'e-video-break';\n/**\n * @hidden\n\n */\nexport var CLS_CAPTION = 'e-img-caption';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_CAPTION = 'e-rte-img-caption';\n/**\n * @hidden\n\n */\nexport var CLS_CAPINLINE = 'e-caption-inline';\n/**\n * @hidden\n\n */\nexport var CLS_IMGINLINE = 'e-imginline';\n/**\n * @hidden\n\n */\nexport var CLS_AUDIOINLINE = 'e-audio-inline';\n/**\n * @hidden\n\n */\nexport var CLS_VIDEOINLINE = 'e-video-inline';\n/**\n * @hidden\n\n */\nexport var CLS_COUNT = 'e-rte-character-count';\n/**\n * @hidden\n\n */\nexport var CLS_WARNING = 'e-warning';\n/**\n * @hidden\n\n */\nexport var CLS_ERROR = 'e-error';\n/**\n * @hidden\n\n */\nexport var CLS_ICONS = 'e-icons';\n/**\n * @hidden\n\n */\nexport var CLS_ACTIVE = 'e-active';\n/**\n * @hidden\n\n */\nexport var CLS_EXPAND_OPEN = 'e-expand-open';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_ELEMENTS = 'e-rte-elements';\n/**\n * @hidden\n\n */\nexport var CLS_TB_BTN = 'e-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_HR_SEPARATOR = 'e-rte-horizontal-separator';\n/**\n * @hidden\n\n */\nexport var CLS_TB_IOS_FIX = 'e-tbar-ios-fixed';\n/**\n * @hidden\n\n */\nexport var CLS_LIST_PRIMARY_CONTENT = 'e-rte-list-primary-content';\n/**\n * @hidden\n\n */\nexport var CLS_NUMBERFORMATLIST_TB_BTN = 'e-rte-numberformatlist-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_BULLETFORMATLIST_TB_BTN = 'e-rte-bulletformatlist-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_FORMATS_TB_BTN = 'e-formats-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_NAME_TB_BTN = 'e-font-name-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_SIZE_TB_BTN = 'e-font-size-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_ALIGN_TB_BTN = 'e-alignment-tbar-btn';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_COLOR_TARGET = 'e-rte-fontcolor-element';\n/**\n * @hidden\n\n */\nexport var CLS_BACKGROUND_COLOR_TARGET = 'e-rte-backgroundcolor-element';\n/**\n * @hidden\n\n */\nexport var CLS_COLOR_CONTENT = 'e-rte-color-content';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_COLOR_DROPDOWN = 'e-rte-fontcolor-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_BACKGROUND_COLOR_DROPDOWN = 'e-rte-backgroundcolor-dropdown';\n/**\n * @hidden\n\n */\nexport var CLS_COLOR_PALETTE = 'e-rte-square-palette';\n/**\n * @hidden\n\n */\nexport var CLS_FONT_COLOR_PICKER = 'e-rte-fontcolor-colorpicker';\n/**\n * @hidden\n\n */\nexport var CLS_BACKGROUND_COLOR_PICKER = 'e-rte-backgroundcolor-colorpicker';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_READONLY = 'e-rte-readonly';\n/**\n * @hidden\n\n */\nexport var CLS_TABLE_SEL = 'e-cell-select';\n/**\n * @hidden\n\n */\nexport var CLS_TB_DASH_BOR = 'e-dashed-border';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ALT_BOR = 'e-alternate-border';\n/**\n * @hidden\n\n */\nexport var CLS_TB_COL_RES = 'e-column-resize';\n/**\n * @hidden\n\n */\nexport var CLS_TB_ROW_RES = 'e-row-resize';\n/**\n * @hidden\n\n */\nexport var CLS_TB_BOX_RES = 'e-table-box';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_HIDDEN = 'e-rte-hidden';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_KEEP_FORMAT = 'e-rte-keepformat';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_REMOVE_FORMAT = 'e-rte-removeformat';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_PLAIN_FORMAT = 'e-rte-plainformat';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_OK = 'e-rte-pasteok';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_PASTE_CANCEL = 'e-rte-pastecancel';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_DIALOG_MIN_HEIGHT = 'e-rte-dialog-minheight';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_HANDLE = 'e-resize-handle';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_EAST = 'e-south-east';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_IMAGE = 'e-rte-image';\n/**\n * @hidden\n\n */\nexport var CLS_RESIZE = 'e-resize';\n/**\n * @hidden\n\n */\nexport var CLS_IMG_FOCUS = 'e-img-focus';\n/**\n * @hidden\n\n */\nexport var CLS_AUD_FOCUS = 'e-audio-focus';\n/**\n * @hidden\n\n */\nexport var CLS_VID_FOCUS = 'e-video-focus';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_DRAG_IMAGE = 'e-rte-drag-image';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_UPLOAD_POPUP = 'e-rte-upload-popup';\n/**\n * @hidden\n\n */\nexport var CLS_POPUP_OPEN = 'e-popup-open';\n/**\n * @hidden\n\n */\nexport var CLS_IMG_RESIZE = 'e-img-resize';\n/**\n * @hidden\n\n */\nexport var CLS_DROPAREA = 'e-droparea';\n/**\n * @hidden\n\n */\nexport var CLS_IMG_INNER = 'e-img-inner';\n/**\n * @hidden\n\n */\nexport var CLS_UPLOAD_FILES = 'e-upload-files';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_DIALOG_UPLOAD = 'e-rte-dialog-upload';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_CNT = 'e-rte-resize';\n/**\n * @hidden\n\n */\nexport var CLS_CUSTOM_TILE = 'e-custom-tile';\n/**\n * @hidden\n\n */\nexport var CLS_NOCOLOR_ITEM = 'e-nocolor-item';\n/**\n * @hidden\n\n */\nexport var CLS_TABLE = 'e-rte-table';\n/**\n * @hidden\n\n */\nexport var CLS_TABLE_BORDER = 'e-rte-table-border';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_TABLE_RESIZE = 'e-rte-table-resize';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_FIXED_TB_EXPAND = 'e-rte-fixed-tb-expand';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_TB_ENABLED = 'e-rte-toolbar-enabled';\n/**\n * @hidden\n\n */\nexport var CLS_RTE_RES_WEST = 'e-south-west';\n","import { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IRichTextEditor} parent - specifies the parent\n * @param {ServiceLocator} locator - specifies the locator.\n * @returns {void}\n */\n function Render(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize Rich Text Editor header, content and footer rendering\n *\n * @returns {void}\n * @hidden\n\n */\n Render.prototype.render = function () {\n // eslint-disable-next-line\n var rteObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.contentRenderer.renderPanel();\n };\n /**\n * Refresh the entire RichTextEditor.\n *\n * @param {NotifyArgs} e - specifies the arguments.\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n if (e === void 0) { e = { requestType: 'refresh' }; }\n this.parent.notify(e.requestType + \"-begin\", e);\n };\n /**\n * Destroy the entire RichTextEditor.\n *\n * @returns {void}\n */\n Render.prototype.destroy = function () {\n this.removeEventListener();\n };\n Render.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n Render.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.keyUp, this.keyUp, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n Render.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.modelChanged, this.refresh);\n this.parent.off(events.keyUp, this.keyUp);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n Render.prototype.keyUp = function (e) {\n if (this.parent.editorMode === 'HTML') {\n switch (e.args.which) {\n case 46:\n case 8:\n // eslint-disable-next-line\n var childNodes = this.parent.contentModule.getEditPanel().childNodes;\n if ((childNodes.length === 0) ||\n (childNodes.length === 1 && childNodes[0].childNodes.length === 0 && ((childNodes[0].tagName === 'BR') ||\n ((childNodes[0].tagName === 'P' || childNodes[0].tagName === 'DIV') && childNodes[0].textContent === '')))) {\n var node = this.parent.contentModule.getEditPanel();\n if (this.parent.enterKey === 'DIV') {\n node.innerHTML = '

';\n }\n else if (this.parent.enterKey === 'BR') {\n node.innerHTML = '
';\n }\n else {\n node.innerHTML = '


';\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), node.childNodes[0], 0);\n }\n break;\n }\n }\n };\n return Render;\n}());\nexport { Render };\n","/**\n * Constant values for Common\n */\n/**\n * Keydown event trigger\n *\n * @hidden\n */\nexport var KEY_DOWN = 'keydown';\n/**\n * Undo and Redo action HTML plugin events\n *\n * @hidden\n */\nexport var ACTION = 'action';\n/**\n * Formats plugin events\n *\n * @hidden\n */\nexport var FORMAT_TYPE = 'format-type';\n/**\n * Keydown handler event trigger\n *\n * @hidden\n */\nexport var KEY_DOWN_HANDLER = 'keydown-handler';\n/**\n * List plugin events\n *\n * @hidden\n */\nexport var LIST_TYPE = 'list-type';\n/**\n * Keyup handler event trigger\n *\n * @hidden\n */\nexport var KEY_UP_HANDLER = 'keyup-handler';\n/**\n * Keyup event trigger\n *\n * @hidden\n */\nexport var KEY_UP = 'keyup';\n/**\n * Model changed plugin event trigger\n *\n * @hidden\n */\nexport var MODEL_CHANGED_PLUGIN = 'model_changed_plugin';\n/**\n * Model changed event trigger\n *\n * @hidden\n */\nexport var MODEL_CHANGED = 'model_changed';\n/**\n * PasteCleanup plugin for MSWord content\n *\n * @hidden\n */\nexport var MS_WORD_CLEANUP_PLUGIN = 'ms_word_cleanup_plugin';\n/**\n * PasteCleanup for MSWord content\n *\n * @hidden\n */\nexport var MS_WORD_CLEANUP = 'ms_word_cleanup';\n/**\n * ActionBegin event callback\n *\n * @hidden\n */\nexport var ON_BEGIN = 'onBegin';\n/**\n * Callback for spacelist action\n *\n * @hidden\n */\nexport var SPACE_ACTION = 'actionBegin';\n/**\n * Format painter event constant\n *\n * @hidden\n */\nexport var FORMAT_PAINTER_ACTIONS = 'format_painter_actions';\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 '@syncfusion/ej2-base';\nimport { Base } from '@syncfusion/ej2-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 ']': 221,\n '[': 219,\n '=': 187\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 *\n * @hidden\n\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element - specifies the elements.\n * @param {KeyboardEventsModel} options - specify the 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 - specifies the event arguments.\n * @returns {void}\n */\n _this.keyPressHandler = function (e) {\n /* eslint-disable */\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var isMetaKey = e.metaKey;\n /* eslint-enable */\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 || isMetaKey) &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n }\n }\n }\n if (_this.keyAction) {\n _this.keyAction(e);\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 - specifies the keyboard event.\n * @param {KeyboardEventsModel} oldProp - specifies the old property.\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 {void}\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void}\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 */\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} - specifies the key data\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 { removeClass, selectAll, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { CLS_EXPAND_OPEN, CLS_TB_ITEM, CLS_ACTIVE } from '../base/classes';\nimport * as CONSTANT from '../../common/constant';\nimport { RenderType } from '../base/enum';\nimport { KeyboardEvents } from '../actions/keyboard';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar ViewSource = /** @class */ (function () {\n /**\n * Constructor for view source module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} locator - specifies the locator.\n * @returns {void}\n */\n function ViewSource(parent, locator) {\n this.parent = parent;\n var serviceLocator = locator;\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.addEventListener();\n }\n ViewSource.prototype.addEventListener = function () {\n this.parent.on(events.sourceCode, this.sourceCode, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.updateSource, this.updateSourceCode, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n ViewSource.prototype.onInitialEnd = function () {\n this.parent.formatter.editorManager.observer.on(CONSTANT.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n ViewSource.prototype.removeEventListener = function () {\n this.unWireEvent();\n this.parent.off(events.sourceCode, this.sourceCode);\n this.parent.off(events.updateSource, this.updateSourceCode);\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n this.parent.formatter.editorManager.observer.off(CONSTANT.KEY_DOWN_HANDLER, this.onKeyDown);\n };\n ViewSource.prototype.getSourceCode = function () {\n return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' + ' ' + this.parent.cssClass });\n };\n ViewSource.prototype.wireEvent = function (element) {\n this.keyboardModule = new KeyboardEvents(element, {\n keyAction: this.previewKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n EventHandler.add(this.previewElement, 'mousedown', this.mouseDownHandler, this);\n };\n ViewSource.prototype.unWireEvent = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n if (this.previewElement) {\n EventHandler.remove(this.previewElement, 'mousedown', this.mouseDownHandler);\n }\n };\n ViewSource.prototype.wireBaseKeyDown = function () {\n this.parent.keyboardModule = new KeyboardEvents(this.contentModule.getEditPanel(), {\n keyAction: this.parent.keyDown.bind(this.parent), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n };\n ViewSource.prototype.unWireBaseKeyDown = function () {\n this.parent.keyboardModule.destroy();\n };\n ViewSource.prototype.mouseDownHandler = function (e) {\n this.parent.notify(events.sourceCodeMouseDown, { args: e });\n };\n ViewSource.prototype.previewKeyDown = function (event) {\n switch (event.action) {\n case 'html-source':\n this.updateSourceCode(event);\n event.preventDefault();\n break;\n case 'toolbar-focus':\n if (this.parent.toolbarSettings.enable) {\n var selector = '.e-toolbar-item[title] [tabindex]';\n this.parent.toolbarModule.baseToolbar.toolbarObj.element.querySelector(selector).focus();\n }\n break;\n }\n };\n ViewSource.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'html-source':\n e.event.preventDefault();\n this.sourceCode(e);\n e.callBack({\n requestType: 'SourceCode',\n editorMode: 'HTML',\n event: e.event\n });\n break;\n }\n };\n /**\n * sourceCode method\n *\n * @param {ClickEventArgs} args - specifies the click event.\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.sourceCode = function (args) {\n this.parent.isBlur = false;\n this.parent.trigger(events.actionBegin, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.parent.element);\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n if (isNullOrUndefined(this.previewElement)) {\n this.previewElement = this.getSourceCode();\n }\n this.parent.updateValueData();\n if (this.parent.iframeSettings.enable) {\n var rteContent = void 0;\n if (isNullOrUndefined(this.parent.element.querySelector('#' + this.parent.element.id + '_source-view'))) {\n rteContent = this.parent.createElement('div', {\n className: 'e-source-content', id: this.parent.element.id + '_source-view'\n });\n }\n else {\n rteContent = this.parent.element.querySelector('#' + this.parent.element.id + '_source-view');\n }\n rteContent.appendChild(this.previewElement);\n this.parent.element.appendChild(rteContent);\n rteContent.style.height = this.contentModule.getPanel().style.height;\n rteContent.style.marginTop = this.contentModule.getPanel().style.marginTop;\n this.getPanel().value = this.getTextAreaValue();\n this.contentModule.getPanel().style.display = 'none';\n rteContent.style.display = 'block';\n this.getPanel().style.display = 'block';\n }\n else {\n this.contentModule.getPanel().appendChild(this.previewElement);\n this.getPanel().value = this.getTextAreaValue();\n this.contentModule.getEditPanel().style.display = 'none';\n this.previewElement.style.display = 'block';\n }\n this.parent.isBlur = false;\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n this.parent.enableToolbarItem('SourceCode');\n if (this.parent.getToolbar()) {\n removeClass([this.parent.getToolbar()], [CLS_EXPAND_OPEN]);\n }\n removeClass(tbItems, [CLS_ACTIVE]);\n this.parent.setContentHeight('sourceCode', true);\n this.wireEvent(this.previewElement);\n this.unWireBaseKeyDown();\n this.previewElement.focus();\n this.parent.updateValue();\n if (!isNullOrUndefined(this.parent.placeholder) && !this.parent.iframeSettings.enable) {\n var placeHolderWrapper = this.parent.element.querySelector('.rte-placeholder.e-rte-placeholder');\n placeHolderWrapper.style.display = 'none';\n }\n this.parent.trigger(events.actionComplete, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n this.parent.invokeChangeEvent();\n };\n /**\n * updateSourceCode method\n *\n * @param {ClickEventArgs} args - specifies the click event.\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.updateSourceCode = function (args) {\n this.parent.isBlur = false;\n this.parent.trigger(events.actionBegin, { requestType: 'Preview', targetItem: 'Preview', args: args });\n var editHTML = this.getPanel();\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'Preview', updateItem: 'SourceCode',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n var serializeValue = this.parent.serializeValue(editHTML.value);\n var value;\n if (serializeValue === null || serializeValue === '') {\n if (this.parent.enterKey === 'DIV') {\n value = '

';\n }\n else if (this.parent.enterKey === 'BR') {\n value = '
';\n }\n else {\n value = '


';\n }\n }\n else {\n value = serializeValue;\n }\n if (this.parent.iframeSettings.enable) {\n editHTML.parentElement.style.display = 'none';\n editHTML.style.display = 'none';\n this.contentModule.getPanel().style.display = 'block';\n this.contentModule.getEditPanel().innerHTML = value;\n }\n else {\n editHTML.style.display = 'none';\n this.contentModule.getEditPanel().style.display = 'block';\n this.contentModule.getEditPanel().innerHTML = value;\n }\n this.parent.isBlur = false;\n this.parent.enableToolbarItem(this.parent.toolbarSettings.items);\n if (this.parent.getToolbar()) {\n removeClass([this.parent.getToolbar()], [CLS_EXPAND_OPEN]);\n }\n this.parent.setContentHeight('preview', true);\n this.unWireEvent();\n this.wireBaseKeyDown();\n this.contentModule.getEditPanel().focus();\n this.parent.updateValue();\n if (!isNullOrUndefined(this.parent.placeholder) && this.contentModule.getEditPanel().innerText.length === 0) {\n var placeHolderWrapper = this.parent.element.querySelector('.rte-placeholder.e-rte-placeholder');\n placeHolderWrapper.style.display = 'block';\n }\n this.parent.trigger(events.actionComplete, { requestType: 'Preview', targetItem: 'Preview', args: args });\n this.parent.formatter.enableUndo(this.parent);\n this.parent.addAudioVideoWrapper();\n this.parent.invokeChangeEvent();\n this.parent.notify(events.tableclass, {});\n };\n ViewSource.prototype.getTextAreaValue = function () {\n return (this.contentModule.getEditPanel().innerHTML === '


') ||\n (this.contentModule.getEditPanel().innerHTML === '

') ||\n (this.contentModule.getEditPanel().innerHTML === '
') ||\n (this.contentModule.getEditPanel().childNodes.length === 1 &&\n (this.contentModule.getEditPanel().childNodes[0].tagName === 'P' &&\n this.contentModule.getEditPanel().innerHTML.length === 7) ||\n (this.contentModule.getEditPanel().childNodes[0].tagName === 'DIV' &&\n this.contentModule.getEditPanel().innerHTML.length === 11)) ? '' : this.parent.value;\n };\n /**\n * getPanel method\n *\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.getPanel = function () {\n return this.parent.element && this.parent.element.querySelector('.e-rte-srctextarea');\n };\n /**\n * getViewPanel method\n *\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.getViewPanel = function () {\n return (this.parent.iframeSettings.enable && this.getPanel()) ? this.getPanel().parentElement : this.getPanel();\n };\n /**\n * Destroy the entire RichTextEditor.\n *\n * @returns {void}\n * @hidden\n\n */\n ViewSource.prototype.destroy = function () {\n this.removeEventListener();\n };\n ViewSource.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n return ViewSource;\n}());\nexport { ViewSource };\n","/**\n * @hidden\n\n */\nexport var executeGroup = {\n 'bold': {\n command: 'Style',\n subCommand: 'Bold',\n value: 'strong'\n },\n 'italic': {\n command: 'Style',\n subCommand: 'Italic',\n value: 'em'\n },\n 'underline': {\n command: 'Style',\n subCommand: 'Underline',\n value: 'span'\n },\n 'strikeThrough': {\n command: 'Style',\n subCommand: 'StrikeThrough',\n value: 'span'\n },\n 'insertCode': {\n command: 'Formats',\n subCommand: 'Pre',\n value: 'pre'\n },\n 'superscript': {\n command: 'Effects',\n subCommand: 'SuperScript',\n value: 'sup'\n },\n 'subscript': {\n command: 'Effects',\n subCommand: 'SubScript',\n value: 'sub'\n },\n 'uppercase': {\n command: 'Casing',\n subCommand: 'UpperCase'\n },\n 'lowercase': {\n command: 'Casing',\n subCommand: 'LowerCase'\n },\n 'fontColor': {\n command: 'font',\n subCommand: 'fontcolor',\n value: '#ff0000'\n },\n 'fontName': {\n command: 'font',\n subCommand: 'fontname',\n value: 'Segoe UI'\n },\n 'fontSize': {\n command: 'font',\n subCommand: 'fontsize',\n value: '10pt'\n },\n 'backColor': {\n command: 'font',\n subCommand: 'backgroundcolor',\n value: '#ffff00'\n },\n 'justifyCenter': {\n command: 'Alignments',\n subCommand: 'JustifyCenter'\n },\n 'justifyFull': {\n command: 'Alignments',\n subCommand: 'JustifyFull'\n },\n 'justifyLeft': {\n command: 'Alignments',\n subCommand: 'JustifyLeft'\n },\n 'justifyRight': {\n command: 'Alignments',\n subCommand: 'JustifyRight'\n },\n 'undo': {\n command: 'Actions',\n subCommand: 'Undo'\n },\n 'redo': {\n command: 'Actions',\n subCommand: 'Redo'\n },\n 'createLink': {\n command: 'Links',\n subCommand: 'createLink'\n },\n 'editLink': {\n command: 'Links',\n subCommand: 'createLink'\n },\n 'createImage': {\n command: 'Images',\n subCommand: 'Images'\n },\n 'formatBlock': {\n command: 'Formats',\n value: 'P'\n },\n 'heading': {\n command: 'Formats',\n value: 'H1'\n },\n 'indent': {\n command: 'Indents',\n subCommand: 'Indent'\n },\n 'outdent': {\n command: 'Indents',\n subCommand: 'Outdent'\n },\n 'insertHTML': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: ''\n },\n 'insertText': {\n command: 'InsertText',\n subCommand: 'InsertText',\n value: ''\n },\n 'insertHorizontalRule': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: '
'\n },\n 'insertImage': {\n command: 'Images',\n subCommand: 'Image'\n },\n 'insertAudio': {\n command: 'Audios',\n subCommand: 'Audio'\n },\n 'insertVideo': {\n command: 'Videos',\n subCommand: 'Video'\n },\n 'editImage': {\n command: 'Images',\n subCommand: 'Image'\n },\n 'insertTable': {\n command: 'Table',\n subCommand: 'CreateTable'\n },\n 'insertBrOnReturn': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: '
'\n },\n 'insertOrderedList': {\n command: 'Lists',\n value: 'OL'\n },\n 'insertUnorderedList': {\n command: 'Lists',\n value: 'UL'\n },\n 'insertParagraph': {\n command: 'Formats',\n value: 'P'\n },\n 'removeFormat': {\n command: 'Clear',\n subCommand: 'ClearFormat'\n },\n 'copyFormatPainter': {\n command: 'FormatPainter',\n value: 'format-copy'\n },\n 'applyFormatPainter': {\n command: 'FormatPainter',\n value: 'format-paste'\n },\n 'escapeFormatPainter': {\n command: 'FormatPainter',\n value: 'escape'\n }\n};\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * ServiceLocator\n *\n * @hidden\n\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n /* eslint-disable */\n /**\n * register method\n *\n * @param {string} name - specifies the name.\n * @param {T} type - specifies the type.\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n /**\n * getService method\n *\n * @param {string} name - specifies the name.\n * @returns {void}\n * @hidden\n\n */\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n /**\n * addRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @param {IRenderer} type - specifies the renderer.\n * @returns {void}\n * @hidden\n\n */\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n /**\n * getRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @returns {void}\n * @hidden\n\n */\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","import * as events from '../base/constant';\n/**\n * `ExecCommandCallBack` module is used to run the editor manager command\n */\nvar ExecCommandCallBack = /** @class */ (function () {\n function ExecCommandCallBack(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ExecCommandCallBack.prototype.addEventListener = function () {\n this.parent.on(events.execCommandCallBack, this.commandCallBack, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n ExecCommandCallBack.prototype.commandCallBack = function (args) {\n if (args.requestType !== 'Undo' && args.requestType !== 'Redo') {\n this.parent.formatter.saveData();\n }\n this.parent.notify(events.toolbarRefresh, { args: args });\n this.parent.notify(events.count, {});\n };\n ExecCommandCallBack.prototype.removeEventListener = function () {\n this.parent.off(events.execCommandCallBack, this.commandCallBack);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n return ExecCommandCallBack;\n}());\nexport { ExecCommandCallBack };\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\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 if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n 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 /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '21';\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 ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjE=\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\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 // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n 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 if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","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","/**\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 // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== \"true\" && str !== \"false\") ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120, isPrimaryKey: true,\n template: '${name}', customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110', template: '${size}', format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var toolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","/* eslint-disable */\n/**\n * Export items model\n */\nexport var templateItems = ['alignments', 'formats', 'fontname', 'fontsize', 'fontcolor', 'backgroundcolor', 'align', 'display', 'audiolayoutoption', 'videolayoutoption', 'videoalign', 'tablerows', 'tablecolumns', 'tablecell', 'tablecellhorizontalalign', 'tablecellverticalalign', 'styles', 'numberformatlist', 'bulletformatlist'];\nexport var tools = {\n 'alignments': {\n 'id': 'Alignments',\n 'icon': 'e-alignments',\n 'tooltip': 'Alignments',\n 'command': 'Alignments',\n 'subCommand': 'Alignments'\n },\n 'justifyleft': {\n 'id': 'JustifyLeft',\n 'icon': 'e-justify-left',\n 'tooltip': 'JustifyLeft',\n 'command': 'Alignments',\n 'subCommand': 'JustifyLeft'\n },\n 'justifycenter': {\n 'id': 'JustifyCenter',\n 'icon': 'e-justify-center',\n 'tooltip': 'JustifyCenter',\n 'command': 'Alignments',\n 'subCommand': 'JustifyCenter'\n },\n 'justifyright': {\n 'id': 'JustifyRight',\n 'icon': 'e-justify-right',\n 'tooltip': 'JustifyRight',\n 'command': 'Alignments',\n 'subCommand': 'JustifyRight'\n },\n 'justifyfull': {\n 'id': 'JustifyFull',\n 'icon': 'e-justify-full',\n 'tooltip': 'JustifyFull',\n 'command': 'Alignments',\n 'subCommand': 'JustifyFull'\n },\n 'fontname': {\n 'id': 'FontName',\n 'icon': 'e-font-name',\n 'tooltip': 'Font Name',\n 'command': 'Font',\n 'subCommand': 'FontName'\n },\n 'fontsize': {\n 'id': 'FontSize',\n 'icon': 'e-font-size',\n 'tooltip': 'Font Size',\n 'command': 'Font',\n 'subCommand': 'FontSize'\n },\n 'fontcolor': {\n 'id': 'FontColor',\n 'icon': 'e-rte-font-color',\n 'tooltip': 'Font Color',\n 'command': 'Font',\n 'subCommand': 'FontColor',\n 'value': '#ff0000ff'\n },\n 'backgroundcolor': {\n 'id': 'BackgroundColor',\n 'icon': 'e-background-color',\n 'tooltip': 'Background Color',\n 'command': 'Font',\n 'subCommand': 'BackgroundColor',\n 'value': '#ffff00ff'\n },\n 'bold': {\n 'id': 'Bold',\n 'icon': 'e-bold',\n 'tooltip': 'Bold',\n 'command': 'Style',\n 'subCommand': 'Bold'\n },\n 'italic': {\n 'id': 'Italic',\n 'icon': 'e-italic',\n 'tooltip': 'Italic',\n 'command': 'Style',\n 'subCommand': 'Italic'\n },\n 'underline': {\n 'id': 'Underline',\n 'icon': 'e-underline',\n 'tooltip': 'Underline',\n 'command': 'Style',\n 'subCommand': 'Underline'\n },\n 'strikethrough': {\n 'id': 'StrikeThrough',\n 'icon': 'e-strike-through',\n 'tooltip': 'StrikeThrough',\n 'command': 'Style',\n 'subCommand': 'StrikeThrough'\n },\n 'clearformat': {\n 'id': 'ClearFormat',\n 'icon': 'e-clear-format',\n 'tooltip': 'Clear Format',\n 'command': 'Clear',\n 'subCommand': 'ClearFormat'\n },\n 'clearall': {\n 'id': 'ClearAll',\n 'icon': 'e-clear-all',\n 'tooltip': 'Clear All',\n 'command': 'Clear',\n 'subCommand': 'ClearAll'\n },\n 'cut': {\n 'id': 'Cut',\n 'icon': 'e-cut',\n 'tooltip': 'Cut',\n 'command': 'ClipBoard',\n 'subCommand': 'Cut'\n },\n 'copy': {\n 'id': 'Copy',\n 'icon': 'e-copy',\n 'tooltip': 'Copy',\n 'command': 'ClipBoard',\n 'subCommand': 'Copy'\n },\n 'paste': {\n 'id': 'Paste',\n 'icon': 'e-paste',\n 'tooltip': 'Paste',\n 'command': 'ClipBoard',\n 'subCommand': 'Paste'\n },\n 'unorderedlist': {\n 'id': 'UnorderedList',\n 'icon': 'e-unorder-list',\n 'tooltip': 'Bulleted List',\n 'command': 'Lists',\n 'subCommand': 'UL'\n },\n 'orderedlist': {\n 'id': 'OrderedList',\n 'icon': 'e-order-list',\n 'tooltip': 'Numbered List',\n 'command': 'Lists',\n 'subCommand': 'OL'\n },\n 'numberformatlist': {\n 'id': 'NumberFormatList',\n 'icon': 'e-order-list',\n 'tooltip': 'Number Format List',\n 'command': 'NumberFormatList',\n 'subCommand': 'NumberFormatList'\n },\n 'bulletformatlist': {\n 'id': 'BulletFormatList',\n 'icon': 'e-unorder-list',\n 'tooltip': 'Bullet Format List',\n 'command': 'BulletFormatList',\n 'subCommand': 'BulletFormatList'\n },\n 'indent': {\n 'id': 'Indent',\n 'icon': 'e-indent',\n 'tooltip': 'Increase Indent',\n 'command': 'Indents',\n 'subCommand': 'Indent'\n },\n 'outdent': {\n 'id': 'Outdent',\n 'icon': 'e-outdent',\n 'tooltip': 'Decrease Indent',\n 'command': 'Indents',\n 'subCommand': 'Outdent'\n },\n 'undo': {\n 'id': 'Undo',\n 'icon': 'e-undo',\n 'tooltip': 'Undo',\n 'command': 'Actions',\n 'subCommand': 'Undo'\n },\n 'redo': {\n 'id': 'Redo',\n 'icon': 'e-redo',\n 'tooltip': 'Redo',\n 'command': 'Actions',\n 'subCommand': 'Redo'\n },\n 'superscript': {\n 'id': 'SuperScript',\n 'icon': 'e-super-script',\n 'tooltip': 'Superscript',\n 'command': 'Effects',\n 'subCommand': 'SuperScript'\n },\n 'subscript': {\n 'id': 'SubScript',\n 'icon': 'e-sub-script',\n 'tooltip': 'Subscript',\n 'command': 'Effects',\n 'subCommand': 'SubScript'\n },\n 'createlink': {\n 'id': 'CreateLink',\n 'icon': 'e-create-link',\n 'tooltip': 'Insert Hyperlink',\n 'command': 'Links',\n 'subCommand': 'CreateLink'\n },\n 'openlink': {\n 'id': 'OpenLink',\n 'icon': 'e-open-link',\n 'tooltip': 'Open Link',\n 'command': 'Links',\n 'subCommand': 'OpenLink'\n },\n 'editlink': {\n 'id': 'EditLink',\n 'icon': 'e-edit-link',\n 'tooltip': 'Edit Link',\n 'command': 'Links',\n 'subCommand': 'EditLink'\n },\n 'removelink': {\n 'id': 'RemoveLink',\n 'icon': 'e-remove-link',\n 'tooltip': 'Remove Link',\n 'command': 'Links',\n 'subCommand': 'RemoveLink'\n },\n 'image': {\n 'id': 'Image',\n 'icon': 'e-image',\n 'tooltip': 'Insert Image',\n 'command': 'Images',\n 'subCommand': 'Image'\n },\n 'audio': {\n 'id': 'Audio',\n 'icon': 'e-audio',\n 'tooltip': 'Insert Audio',\n 'command': 'Audios',\n 'subCommand': 'Audio'\n },\n 'video': {\n 'id': 'Video',\n 'icon': 'e-video',\n 'tooltip': 'Insert Video',\n 'command': 'Videos',\n 'subCommand': 'Video'\n },\n 'filemanager': {\n 'id': 'FileManager',\n 'icon': 'e-rte-file-manager',\n 'tooltip': 'File Manager',\n 'command': 'Files',\n 'subCommand': 'File'\n },\n 'createtable': {\n 'id': 'CreateTable',\n 'icon': 'e-create-table',\n 'tooltip': 'Create Table',\n 'command': 'Table',\n 'subCommand': 'CreateTable'\n },\n 'removetable': {\n 'id': 'removeTable',\n 'icon': 'e-remove-table',\n 'tooltip': 'Remove Table',\n 'command': 'removeTable',\n 'subCommand': 'removeTable'\n },\n 'replace': {\n 'id': 'Replace',\n 'icon': 'e-replace',\n 'tooltip': 'Replace',\n 'command': 'Images',\n 'subCommand': 'Replace'\n },\n 'audioreplace': {\n 'id': 'AudioReplace',\n 'icon': 'e-audio-replace',\n 'tooltip': 'Audio Replace',\n 'command': 'Audios',\n 'subCommand': 'AudioReplace'\n },\n 'audioremove': {\n 'id': 'AudioRemove',\n 'icon': 'e-audio-remove',\n 'tooltip': 'Audio Remove',\n 'command': 'Audios',\n 'subCommand': 'AudioRemove'\n },\n 'audiolayoutoption': {\n 'id': 'AudioLayoutOption',\n 'icon': 'e-audio-display',\n 'tooltip': 'Audio LayoutOption',\n 'command': 'Audios',\n 'subCommand': 'AudioLayoutOption'\n },\n 'videoreplace': {\n 'id': 'VideoReplace',\n 'icon': 'e-video-replace',\n 'tooltip': 'Video Replace',\n 'command': 'Videos',\n 'subCommand': 'VideoReplace'\n },\n 'videoalign': {\n 'id': 'VideoAlign',\n 'icon': 'e-video-align',\n 'tooltip': 'Video Align',\n 'command': 'Videos',\n 'subCommand': 'VideoAlign'\n },\n 'videoremove': {\n 'id': 'VideoRemove',\n 'icon': 'e-video-remove',\n 'tooltip': 'Video Remove',\n 'command': 'Videos',\n 'subCommand': 'VideoRemove'\n },\n 'videolayoutoption': {\n 'id': 'VideoLayoutOption',\n 'icon': 'e-video-display',\n 'tooltip': 'Video LayoutOption',\n 'command': 'Videos',\n 'subCommand': 'VideoLayoutOption'\n },\n 'videodimension': {\n 'id': 'VideoDimension',\n 'icon': 'e-video-dimension',\n 'tooltip': 'Video Dimension',\n 'command': 'Videos',\n 'subCommand': 'VideoDimension'\n },\n 'align': {\n 'id': 'Align',\n 'icon': 'e-align',\n 'tooltip': 'Align',\n 'command': 'Images',\n 'subCommand': 'Align'\n },\n 'caption': {\n 'id': 'Caption',\n 'icon': 'e-caption',\n 'tooltip': 'Image Caption',\n 'command': 'Images',\n 'subCommand': 'Caption'\n },\n 'remove': {\n 'id': 'Remove',\n 'icon': 'e-remove',\n 'tooltip': 'Remove',\n 'command': 'Images',\n 'subCommand': 'Remove'\n },\n 'openimagelink': {\n 'id': 'OpenImageLink',\n 'icon': 'e-open-link',\n 'tooltip': 'Open Link',\n 'command': 'Images',\n 'subCommand': 'OpenImageLink'\n },\n 'editimagelink': {\n 'id': 'EditImageLink',\n 'icon': 'e-edit-link',\n 'tooltip': 'Edit Link',\n 'command': 'Images',\n 'subCommand': 'EditImageLink'\n },\n 'removeimagelink': {\n 'id': 'RemoveImageLink',\n 'icon': 'e-remove-link',\n 'tooltip': 'Remove Link',\n 'command': 'Images',\n 'subCommand': 'RemoveImageLink'\n },\n 'insertlink': {\n 'id': 'InsertLink',\n 'icon': 'e-insert-link',\n 'tooltip': 'Insert Link',\n 'command': 'Images',\n 'subCommand': 'InsertLink'\n },\n 'display': {\n 'id': 'Display',\n 'icon': 'e-display',\n 'tooltip': 'Display',\n 'command': 'Images',\n 'subCommand': 'Display'\n },\n 'alttext': {\n 'id': 'AltText',\n 'icon': 'e-alt-text',\n 'tooltip': 'Alternative Text',\n 'command': 'Images',\n 'subCommand': 'AltText'\n },\n 'dimension': {\n 'id': 'Dimension',\n 'icon': 'e-img-dimension',\n 'tooltip': 'Change Size',\n 'command': 'Images',\n 'subCommand': 'Dimension'\n },\n 'fullscreen': {\n 'id': 'Maximize',\n 'icon': 'e-maximize',\n 'tooltip': 'Maximize',\n 'command': 'View',\n 'subCommand': 'Maximize'\n },\n 'maximize': {\n 'id': 'Maximize',\n 'icon': 'e-maximize',\n 'tooltip': 'Maximize',\n 'command': 'FullScreen',\n 'subCommand': 'Maximize'\n },\n 'minimize': {\n 'id': 'Minimize',\n 'icon': 'e-minimize',\n 'tooltip': 'Minimize',\n 'command': 'FullScreen',\n 'subCommand': 'Minimize'\n },\n 'lowercase': {\n 'id': 'LowerCase',\n 'icon': 'e-lower-case',\n 'tooltip': 'Lower Case',\n 'command': 'Casing',\n 'subCommand': 'LowerCase'\n },\n 'uppercase': {\n 'id': 'UpperCase',\n 'icon': 'e-upper-case',\n 'tooltip': 'Upper Case',\n 'command': 'Casing',\n 'subCommand': 'UpperCase'\n },\n 'print': {\n 'id': 'Print',\n 'icon': 'e-print',\n 'tooltip': 'Print',\n 'command': 'Print',\n 'subCommand': 'Print'\n },\n 'formats': {\n 'id': 'Formats',\n 'icon': 'e-formats',\n 'tooltip': 'Formats',\n 'command': 'Formats',\n 'subCommand': 'Formats'\n },\n 'sourcecode': {\n 'id': 'SourceCode',\n 'icon': 'e-source-code',\n 'tooltip': 'Source Code',\n 'command': 'SourceCode',\n 'subCommand': 'SourceCode'\n },\n 'preview': {\n 'id': 'Preview',\n 'icon': 'e-preview',\n 'tooltip': 'Preview',\n 'command': 'Preview',\n 'subCommand': 'Preview'\n },\n 'viewside': {\n 'id': 'ViewSide',\n 'icon': 'e-view-side',\n 'tooltip': 'ViewSide',\n 'command': 'ViewSide',\n 'subCommand': 'ViewSide'\n },\n 'insertcode': {\n 'id': 'InsertCode',\n 'icon': 'e-insert-code',\n 'tooltip': 'Insert Code',\n 'command': 'Formats',\n 'subCommand': 'Pre'\n },\n 'tableheader': {\n 'id': 'TableHeader',\n 'icon': 'e-table-header',\n 'tooltip': 'Table Header',\n 'command': 'Table',\n 'subCommand': 'TableHeader'\n },\n 'tableremove': {\n 'id': 'TableRemove',\n 'icon': 'e-table-remove',\n 'tooltip': 'Table Remove',\n 'command': 'Table',\n 'subCommand': 'TableRemove'\n },\n 'tablerows': {\n 'id': 'TableRows',\n 'icon': 'e-table-rows',\n 'tooltip': 'Table Rows',\n 'command': 'Table',\n 'subCommand': 'TableRows'\n },\n 'tablecolumns': {\n 'id': 'TableColumns',\n 'icon': 'e-table-columns',\n 'tooltip': 'Table Columns',\n 'command': 'Table',\n 'subCommand': 'TableColumns'\n },\n 'tablecell': {\n 'id': 'TableCell',\n 'icon': 'e-table-cell',\n 'tooltip': 'Table Cell',\n 'command': 'Table',\n 'subCommand': 'TableCell'\n },\n 'tablecellbackground': {\n 'id': 'TableCellBackground',\n 'icon': 'e-table-cell-background',\n 'tooltip': 'Table Cell Background',\n 'command': 'Table',\n 'subCommand': 'TableCellBackground'\n },\n 'tablecellhorizontalalign': {\n 'id': 'TableCellHorizontalAlign',\n 'icon': 'e-table-cell-horizontalAlign',\n 'tooltip': 'Table Cell HorizontalAlign',\n 'command': 'Table',\n 'subCommand': 'TableCellHorizontalAlign'\n },\n 'tablecellverticalalign': {\n 'id': 'TableCellVerticalAlign',\n 'icon': 'e-table-cell-verticalAlign',\n 'tooltip': 'Table Cell VerticalAlign',\n 'command': 'Table',\n 'subCommand': 'TableCellVerticalAlign'\n },\n 'tableeditproperties': {\n 'id': 'TableEditProperties',\n 'icon': 'e-table-edit-properties',\n 'tooltip': 'Table Edit Properties',\n 'command': 'Table',\n 'subCommand': 'TableEditProperties'\n },\n 'styles': {\n 'id': 'Styles',\n 'icon': 'e-table-styles',\n 'tooltip': 'Styles',\n 'command': 'Table',\n 'subCommand': 'Styles'\n },\n 'formatpainter': {\n 'id': 'FormatPainter',\n 'icon': 'e-rte-format-painter',\n 'tooltip': 'Format Painter',\n 'command': 'FormatPainter',\n 'subCommand': 'FormatPainter'\n }\n};\nvar alignmentLocale = [\n { locale: 'alignmentsDropDownLeft', value: 'JustifyLeft' },\n { locale: 'alignmentsDropDownCenter', value: 'JustifyCenter' },\n { locale: 'alignmentsDropDownRight', value: 'JustifyRight' },\n { locale: 'alignmentsDropDownJustify', value: 'JustifyFull' }\n];\nexport var alignmentItems = [\n { iconCss: 'e-icons e-justify-left', text: 'Align Left', command: 'Alignments', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', text: 'Align Center', command: 'Alignments', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', text: 'Align Right', command: 'Alignments', subCommand: 'JustifyRight' },\n { iconCss: 'e-icons e-justify-full', text: 'Align Justify', command: 'Alignments', subCommand: 'JustifyFull' }\n];\nexport var imageAlignItems = [\n { iconCss: 'e-icons e-justify-left', command: 'Images', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', command: 'Images', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', command: 'Images', subCommand: 'JustifyRight' },\n];\nexport var videoAlignItems = [\n { iconCss: 'e-icons e-justify-left', command: 'Videos', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', command: 'Videos', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', command: 'Videos', subCommand: 'JustifyRight' },\n];\nvar displayLocale = [\n { locale: 'imageDisplayDropDownInline', value: 'Inline' },\n { locale: 'imageDisplayDropDownBreak', value: 'Break' }\n];\nvar audioLayoutOptionLocale = [\n { locale: 'audioLayoutOptionDropDownInline', value: 'Inline' },\n { locale: 'audioLayoutOptionDropDownBreak', value: 'Break' }\n];\nvar videoLayoutOptionLocale = [\n { locale: 'videoLayoutOptionDropDownInline', value: 'Inline' },\n { locale: 'videoLayoutOptionDropDownBreak', value: 'Break' }\n];\nexport var imageDisplayItems = [\n { text: 'Inline', cssClass: 'e-inline', command: 'Images', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-break', command: 'Images', subCommand: 'Break' },\n];\nexport var audioLayoutOptionItems = [\n { text: 'Inline', cssClass: 'e-audio-inline', command: 'Audios', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-audio-break', command: 'Audios', subCommand: 'Break' },\n];\nexport var videoLayoutOptionItems = [\n { text: 'Inline', cssClass: 'e-video-inline', command: 'Videos', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-video-break', command: 'Videos', subCommand: 'Break' },\n];\nexport var tableCellItems = [\n { iconCss: 'e-icons e-cell-merge', text: 'Merge cells', command: 'Table', subCommand: 'Merge' },\n { iconCss: 'e-icons e-cell-horizontal-split', text: 'Horizontal split', command: 'Table', subCommand: 'HorizontalSplit' },\n { iconCss: 'e-icons e-cell-vertical-split', text: 'Vertical split', command: 'Table', subCommand: 'VerticalSplit' },\n];\nvar tableRowLocale = [\n { locale: 'tableInsertRowDropDownBefore', value: 'InsertRowBefore' },\n { locale: 'tableInsertRowDropDownAfter', value: 'InsertRowAfter' },\n { locale: 'tableInsertRowDropDownDelete', value: 'DeleteRow' }\n];\nexport var tableRowsItems = [\n { iconCss: 'e-icons e-insert-row-before', text: 'Insert row before', command: 'Table', subCommand: 'InsertRowBefore' },\n { iconCss: 'e-icons e-insert-row-after', text: 'Insert row after', command: 'Table', subCommand: 'InsertRowAfter' },\n { iconCss: 'e-icons e-delete-row', text: 'Delete row', command: 'Table', subCommand: 'DeleteRow' },\n];\nvar tableColumnLocale = [\n { locale: 'tableInsertColumnDropDownLeft', value: 'InsertColumnLeft' },\n { locale: 'tableInsertColumnDropDownRight', value: 'InsertColumnRight' },\n { locale: 'tableInsertColumnDropDownDelete', value: 'DeleteColumn' }\n];\nexport var tableColumnsItems = [\n { iconCss: 'e-icons e-insert-column-left', text: 'Insert column left', command: 'Table', subCommand: 'InsertColumnLeft' },\n { iconCss: 'e-icons e-insert-column-right', text: 'Insert column right', command: 'Table', subCommand: 'InsertColumnRight' },\n { iconCss: 'e-icons e-delete-column', text: 'Delete column', command: 'Table', subCommand: 'DeleteColumn' },\n];\nvar tableVerticalLocale = [\n { locale: 'tableVerticalAlignDropDownTop', value: 'AlignTop' },\n { locale: 'tableVerticalAlignDropDownMiddle', value: 'AlignMiddle' },\n { locale: 'tableVerticalAlignDropDownBottom', value: 'AlignBottom' }\n];\nexport var TableCellVerticalAlignItems = [\n { iconCss: 'e-icons e-align-top', text: 'Align Top', command: 'Table', subCommand: 'AlignTop' },\n { iconCss: 'e-icons e-align-middle', text: 'Align Middle', command: 'Table', subCommand: 'AlignMiddle' },\n { iconCss: 'e-icons e-align-bottom', text: 'Align Bottom', command: 'Table', subCommand: 'AlignBottom' },\n];\nvar tableStyleLocale = [\n { locale: 'tableStylesDropDownDashedBorder', value: 'Dashed' },\n { locale: 'tableStylesDropDownAlternateRows', value: 'Alternate' }\n];\nexport var TableStyleItems = [\n { text: 'Dashed Borders', cssClass: 'e-dashed-borders', command: 'Table', subCommand: 'Dashed' },\n { text: 'Alternate Rows', cssClass: 'e-alternate-rows', command: 'Table', subCommand: 'Alternate' }\n];\nexport var predefinedItems = ['Bold', 'Italic', 'Underline', '|', 'Formats', 'Alignments',\n 'OrderedList', 'UnorderedList', '|', 'CreateLink', 'Image', '|', 'SourceCode', 'Undo', 'Redo'];\nexport var fontFamily = [\n { cssClass: 'e-segoe-ui', text: 'Segoe UI', command: 'Font', subCommand: 'FontName', value: 'Segoe UI' },\n { cssClass: 'e-arial', text: 'Arial', command: 'Font', subCommand: 'FontName', value: 'Arial,Helvetica,sans-serif' },\n { cssClass: 'e-georgia', text: 'Georgia', command: 'Font', subCommand: 'FontName', value: 'Georgia,serif' },\n { cssClass: 'e-impact', text: 'Impact', command: 'Font', subCommand: 'FontName', value: 'Impact,Charcoal,sans-serif' },\n { cssClass: 'e-tahoma', text: 'Tahoma', command: 'Font', subCommand: 'FontName', value: 'Tahoma,Geneva,sans-serif' },\n { cssClass: 'e-times-new-roman', text: 'Times New Roman', command: 'Font', subCommand: 'FontName', value: 'Times New Roman,Times,serif' },\n { cssClass: 'e-verdana', text: 'Verdana', command: 'Font', subCommand: 'FontName', value: 'Verdana,Geneva,sans-serif' }\n];\nexport var fontSize = [\n { text: '8 pt', value: '8pt' },\n { text: '10 pt', value: '10pt' },\n { text: '12 pt', value: '12pt' },\n { text: '14 pt', value: '14pt' },\n { text: '18 pt', value: '18pt' },\n { text: '24 pt', value: '24pt' },\n { text: '36 pt', value: '36pt' }\n];\nexport var formatItems = [\n { cssClass: 'e-paragraph', text: 'Paragraph', command: 'Formats', subCommand: 'P', value: 'P' },\n { cssClass: 'e-code', text: 'Code', command: 'Formats', subCommand: 'Pre', value: 'Pre' },\n { cssClass: 'e-quote', text: 'Quotation', command: 'Formats', subCommand: 'BlockQuote', value: 'BlockQuote' },\n { cssClass: 'e-h1', text: 'Heading 1', command: 'Formats', subCommand: 'H1', value: 'H1' },\n { cssClass: 'e-h2', text: 'Heading 2', command: 'Formats', subCommand: 'H2', value: 'H2' },\n { cssClass: 'e-h3', text: 'Heading 3', command: 'Formats', subCommand: 'H3', value: 'H3' },\n { cssClass: 'e-h4', text: 'Heading 4', command: 'Formats', subCommand: 'H4', value: 'H4' }\n];\nexport var fontColor = {\n 'Custom': [\n '', '#000000', '#e7e6e6', '#44546a', '#4472c4', '#ed7d31', '#a5a5a5', '#ffc000', '#70ad47', '#ff0000',\n '#f2f2f2', '#808080', '#cfcdcd', '#d5dce4', '#d9e2f3', '#fbe4d5', '#ededed', '#fff2cc', '#e2efd9', '#ffcccc',\n '#d9d9d9', '#595959', '#aeaaaa', '#acb9ca', '#b4c6e7', '#f7caac', '#dbdbdb', '#ffe599', '#c5e0b3', '#ff8080',\n '#bfbfbf', '#404040', '#747070', '#8496b0', '#8eaadb', '#f4b083', '#c9c9c9', '#ffd966', '#a8d08d', '#ff3333',\n '#a6a6a6', '#262626', '#3b3838', '#323e4f', '#2f5496', '#c45911', '#7b7b7b', '#bf8f00', '#538135', '#b30000',\n '#7f7f7f', '#0d0d0d', '#161616', '#212934', '#1f3763', '#823b0b', '#525252', '#7f5f00', '#375623', '#660000'\n ]\n};\nexport var backgroundColor = {\n 'Custom': [\n '', '#000000', '#ffff00', '#00ff00', '#00ffff', '#0000ff', '#ff0000', '#000080', '#800080', '#996633',\n '#f2f2f2', '#808080', '#ffffcc', '#b3ffb3', '#ccffff', '#ccccff', '#ffcccc', '#ccccff', '#ff80ff', '#f2e6d9',\n '#d9d9d9', '#595959', '#ffff80', '#80ff80', '#b3ffff', '#8080ff', '#ff8080', '#8080ff', '#ff00ff', '#dfbf9f',\n '#bfbfbf', '#404040', '#ffff33', '#33ff33', '#33ffff', '#3333ff', '#ff3333', '#0000b3', '#b300b3', '#c68c53',\n '#a6a6a6', '#262626', '#e6e600', '#00b300', '#009999', '#000099', '#b30000', '#000066', '#660066', '#86592d',\n '#7f7f7f', '#0d0d0d', '#999900', '#006600', '#006666', '#000066', '#660000', '#00004d', '#4d004d', '#734d26'\n ]\n};\nexport var numberFormatList = [\n { text: 'None', command: 'Lists', subCommand: 'NumberFormatList', value: 'none' },\n { text: 'Number', command: 'Lists', subCommand: 'NumberFormatList', value: 'decimal' },\n { text: 'Lower Greek', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerGreek' },\n { text: 'Lower Roman', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerRoman' },\n { text: 'Upper Alpha', command: 'Lists', subCommand: 'NumberFormatList', value: 'upperAlpha' },\n { text: 'Lower Alpha', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerAlpha' },\n { text: 'Upper Roman', command: 'Lists', subCommand: 'NumberFormatList', value: 'upperRoman' },\n];\nexport var bulletFormatList = [\n { text: 'None', command: 'Lists', subCommand: 'BulletFormatList', value: 'none' },\n { text: 'Disc', command: 'Lists', subCommand: 'BulletFormatList', value: 'disc' },\n { text: 'Circle', command: 'Lists', subCommand: 'BulletFormatList', value: 'circle' },\n { text: 'Square', command: 'Lists', subCommand: 'BulletFormatList', value: 'square' },\n];\nfunction getLocale(self, localeItems, item) {\n for (var i = 0; localeItems.length > i; i++) {\n if (localeItems[i].value === item.subCommand) {\n return self.localeObj.getConstant(localeItems[i].locale);\n }\n }\n return item.text;\n}\nexport function updateDropDownLocale(self) {\n alignmentItems.forEach(function (item, i) {\n alignmentItems[i].text = getLocale(self, alignmentLocale, alignmentItems[i]);\n });\n imageDisplayItems.forEach(function (item, i) {\n imageDisplayItems[i].text = getLocale(self, displayLocale, imageDisplayItems[i]);\n });\n audioLayoutOptionItems.forEach(function (item, i) {\n audioLayoutOptionItems[i].text = getLocale(self, audioLayoutOptionLocale, audioLayoutOptionItems[i]);\n });\n videoLayoutOptionItems.forEach(function (item, i) {\n videoLayoutOptionItems[i].text = getLocale(self, videoLayoutOptionLocale, videoLayoutOptionItems[i]);\n });\n tableRowsItems.forEach(function (item, i) {\n tableRowsItems[i].text = getLocale(self, tableRowLocale, tableRowsItems[i]);\n });\n tableColumnsItems.forEach(function (item, i) {\n tableColumnsItems[i].text = getLocale(self, tableColumnLocale, tableColumnsItems[i]);\n });\n TableCellVerticalAlignItems.forEach(function (item, i) {\n TableCellVerticalAlignItems[i].text = getLocale(self, tableVerticalLocale, TableCellVerticalAlignItems[i]);\n });\n TableStyleItems.forEach(function (item, i) {\n TableStyleItems[i].text = getLocale(self, tableStyleLocale, TableStyleItems[i]);\n });\n}\nexport var windowKeys = {\n 'Insert Link': 'Ctrl + K',\n 'Insert Image': 'Ctrl + Shift + I',\n 'Create Table': 'Ctrl + Shift + E',\n 'Undo': 'Ctrl + Z',\n 'Redo': 'Ctrl + Y',\n 'Copy': 'Ctrl + C',\n 'Cut': 'Ctrl + X',\n 'Paste': 'Ctrl + V',\n 'Bold': 'Ctrl + B',\n 'Italic': 'Ctrl + I',\n 'Underline': 'Ctrl + U',\n 'Strikethrough': 'Ctrl + Shift + S',\n 'Upper Case': 'Ctrl + Shift + U',\n 'Lower Case': 'Ctrl + Shift + L',\n 'Superscript': 'Ctrl + Shift + =',\n 'Subscript': 'Ctrl + =',\n 'Source Code': 'Ctrl + Shift + H',\n 'Maximize': 'Ctrl + Shift + F',\n 'Minimize': 'Esc',\n 'Clear Format': 'Ctrl + Shift + R',\n 'Numbered List': 'Ctrl + Shift + O',\n 'Bulleted List': 'Ctrl + Alt + O',\n 'Format Painter': 'Ctrl + Shift + C, Ctrl + Shift + V'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { AjaxSettings, ContextMenuSettings } from '@syncfusion/ej2-filemanager';\nimport { DetailsViewSettings, NavigationPaneSettings } from '@syncfusion/ej2-filemanager';\nimport { SearchSettings } from '@syncfusion/ej2-filemanager';\nimport { ToolbarSettings as FileToolbarSettings } from '@syncfusion/ej2-filemanager';\nimport { UploadSettings } from '@syncfusion/ej2-filemanager';\nimport { ToolbarType } from '../base/enum';\nimport { backgroundColor, fontColor, fontFamily, fontSize, formatItems, predefinedItems, TableStyleItems, numberFormatList, bulletFormatList } from './items';\n/**\n * Configures the toolbar settings of the RichTextEditor.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"enableFloating\", void 0);\n __decorate([\n Property(ToolbarType.Expand)\n ], ToolbarSettings.prototype, \"type\", void 0);\n __decorate([\n Property(predefinedItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property({})\n ], ToolbarSettings.prototype, \"itemConfigs\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * Configures the image settings of the RichTextEditor.\n */\nvar ImageSettings = /** @class */ (function (_super) {\n __extends(ImageSettings, _super);\n function ImageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['.jpeg', '.jpg', '.png'])\n ], ImageSettings.prototype, \"allowedTypes\", void 0);\n __decorate([\n Property('inline')\n ], ImageSettings.prototype, \"display\", void 0);\n __decorate([\n Property('Blob')\n ], ImageSettings.prototype, \"saveFormat\", void 0);\n __decorate([\n Property('auto')\n ], ImageSettings.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], ImageSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"path\", void 0);\n __decorate([\n Property(true)\n ], ImageSettings.prototype, \"resize\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], ImageSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(0)\n ], ImageSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(null)\n ], ImageSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(false)\n ], ImageSettings.prototype, \"resizeByPercent\", void 0);\n return ImageSettings;\n}(ChildProperty));\nexport { ImageSettings };\n/**\n * Configures the audio settings of the RichTextEditor.\n */\nvar AudioSettings = /** @class */ (function (_super) {\n __extends(AudioSettings, _super);\n function AudioSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['.wav', '.mp3', '.m4a', '.wma'])\n ], AudioSettings.prototype, \"allowedTypes\", void 0);\n __decorate([\n Property('Inline')\n ], AudioSettings.prototype, \"layoutOption\", void 0);\n __decorate([\n Property('Blob')\n ], AudioSettings.prototype, \"saveFormat\", void 0);\n __decorate([\n Property(null)\n ], AudioSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property(null)\n ], AudioSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(null)\n ], AudioSettings.prototype, \"path\", void 0);\n return AudioSettings;\n}(ChildProperty));\nexport { AudioSettings };\n/**\n * Configures the video settings of the RichTextEditor.\n */\nvar VideoSettings = /** @class */ (function (_super) {\n __extends(VideoSettings, _super);\n function VideoSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['.mp4', '.mov', '.wmv', '.avi'])\n ], VideoSettings.prototype, \"allowedTypes\", void 0);\n __decorate([\n Property('Inline')\n ], VideoSettings.prototype, \"layoutOption\", void 0);\n __decorate([\n Property('Blob')\n ], VideoSettings.prototype, \"saveFormat\", void 0);\n __decorate([\n Property('auto')\n ], VideoSettings.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], VideoSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"path\", void 0);\n __decorate([\n Property(true)\n ], VideoSettings.prototype, \"resize\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], VideoSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(0)\n ], VideoSettings.prototype, \"minHeight\", void 0);\n __decorate([\n Property(null)\n ], VideoSettings.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(false)\n ], VideoSettings.prototype, \"resizeByPercent\", void 0);\n return VideoSettings;\n}(ChildProperty));\nexport { VideoSettings };\n/**\n * Configures the file manager settings of the RichTextEditor.\n */\nvar FileManagerSettings = /** @class */ (function (_super) {\n __extends(FileManagerSettings, _super);\n function FileManagerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ getImageUrl: null, url: null, uploadUrl: null }, AjaxSettings)\n ], FileManagerSettings.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManagerSettings.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Complex({ visible: true, file: ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Rename', '|', 'Details'], folder: ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', '|', 'Details'], layout: ['SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'] }, ContextMenuSettings)\n ], FileManagerSettings.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManagerSettings.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManagerSettings.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(false)\n ], FileManagerSettings.prototype, \"enable\", void 0);\n __decorate([\n Complex({ maxWidth: '650px', minWidth: '240px', visible: true }, NavigationPaneSettings)\n ], FileManagerSettings.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManagerSettings.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManagerSettings.prototype, \"rootAliasName\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManagerSettings.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManagerSettings.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(false)\n ], FileManagerSettings.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManagerSettings.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManagerSettings.prototype, \"sortOrder\", void 0);\n __decorate([\n Complex({ visible: true, items: ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename', 'SortBy', 'Refresh', 'Selection', 'View', 'Details'] }, FileToolbarSettings)\n ], FileManagerSettings.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({ autoUpload: true, minFileSize: 0, maxFileSize: 30000000, allowedExtensions: '', autoClose: false }, UploadSettings)\n ], FileManagerSettings.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManagerSettings.prototype, \"view\", void 0);\n return FileManagerSettings;\n}(ChildProperty));\nexport { FileManagerSettings };\nvar TableSettings = /** @class */ (function (_super) {\n __extends(TableSettings, _super);\n function TableSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('100%')\n ], TableSettings.prototype, \"width\", void 0);\n __decorate([\n Property(TableStyleItems)\n ], TableSettings.prototype, \"styles\", void 0);\n __decorate([\n Property(true)\n ], TableSettings.prototype, \"resize\", void 0);\n __decorate([\n Property(0)\n ], TableSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(null)\n ], TableSettings.prototype, \"maxWidth\", void 0);\n return TableSettings;\n}(ChildProperty));\nexport { TableSettings };\n/**\n * Configures the quick toolbar settings of the RichTextEditor.\n */\nvar QuickToolbarSettings = /** @class */ (function (_super) {\n __extends(QuickToolbarSettings, _super);\n function QuickToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], QuickToolbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], QuickToolbarSettings.prototype, \"showOnRightClick\", void 0);\n __decorate([\n Property('hide')\n ], QuickToolbarSettings.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(['Open', 'Edit', 'UnLink'])\n ], QuickToolbarSettings.prototype, \"link\", void 0);\n __decorate([\n Property(['Replace', 'Align', 'Caption', 'Remove', '-', 'InsertLink', 'OpenImageLink', 'EditImageLink', 'RemoveImageLink', 'Display', 'AltText', 'Dimension'])\n ], QuickToolbarSettings.prototype, \"image\", void 0);\n __decorate([\n Property(['AudioReplace', 'AudioRemove', 'AudioLayoutOption'])\n ], QuickToolbarSettings.prototype, \"audio\", void 0);\n __decorate([\n Property(['VideoReplace', 'VideoAlign', 'VideoRemove', 'VideoLayoutOption', 'VideoDimension'])\n ], QuickToolbarSettings.prototype, \"video\", void 0);\n __decorate([\n Property(['Cut', 'Copy', 'Paste'])\n ], QuickToolbarSettings.prototype, \"text\", void 0);\n __decorate([\n Property(['TableHeader', 'TableRows', 'TableColumns', 'BackgroundColor', '-', 'TableRemove', 'Alignments', 'TableCellVerticalAlign', 'Styles'])\n ], QuickToolbarSettings.prototype, \"table\", void 0);\n return QuickToolbarSettings;\n}(ChildProperty));\nexport { QuickToolbarSettings };\n/**\n * Configure the format painter settings of the Rich Text Editor.\n */\nvar FormatPainterSettings = /** @class */ (function (_super) {\n __extends(FormatPainterSettings, _super);\n function FormatPainterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(['Text', 'List', 'Table'])\n ], FormatPainterSettings.prototype, \"allowedContext\", void 0);\n __decorate([\n Property('b; em; font; sub; sup; kbd; i; s; u; code; strong; span; p; div; h1; h2; h3; h4; h5; h6; blockquote; table; thead; tbody; tr; td; th; ol; ul; li; pre;')\n ], FormatPainterSettings.prototype, \"allowedFormats\", void 0);\n __decorate([\n Property(null)\n ], FormatPainterSettings.prototype, \"deniedFormats\", void 0);\n return FormatPainterSettings;\n}(ChildProperty));\nexport { FormatPainterSettings };\n/**\n * Configures the Paste Cleanup settings of the RichTextEditor.\n */\nvar PasteCleanupSettings = /** @class */ (function (_super) {\n __extends(PasteCleanupSettings, _super);\n function PasteCleanupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], PasteCleanupSettings.prototype, \"prompt\", void 0);\n __decorate([\n Property(null)\n ], PasteCleanupSettings.prototype, \"deniedAttrs\", void 0);\n __decorate([\n Property(['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'list-style-type', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width'])\n ], PasteCleanupSettings.prototype, \"allowedStyleProps\", void 0);\n __decorate([\n Property(null)\n ], PasteCleanupSettings.prototype, \"deniedTags\", void 0);\n __decorate([\n Property(true)\n ], PasteCleanupSettings.prototype, \"keepFormat\", void 0);\n __decorate([\n Property(false)\n ], PasteCleanupSettings.prototype, \"plainText\", void 0);\n return PasteCleanupSettings;\n}(ChildProperty));\nexport { PasteCleanupSettings };\n/**\n * Configures the font family settings of the RichTextEditor.\n */\nvar FontFamily = /** @class */ (function (_super) {\n __extends(FontFamily, _super);\n function FontFamily() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], FontFamily.prototype, \"default\", void 0);\n __decorate([\n Property('65px')\n ], FontFamily.prototype, \"width\", void 0);\n __decorate([\n Property(fontFamily)\n ], FontFamily.prototype, \"items\", void 0);\n return FontFamily;\n}(ChildProperty));\nexport { FontFamily };\n/**\n * Configures the font size settings of the RichTextEditor.\n */\nvar FontSize = /** @class */ (function (_super) {\n __extends(FontSize, _super);\n function FontSize() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], FontSize.prototype, \"default\", void 0);\n __decorate([\n Property('35px')\n ], FontSize.prototype, \"width\", void 0);\n __decorate([\n Property(fontSize)\n ], FontSize.prototype, \"items\", void 0);\n return FontSize;\n}(ChildProperty));\nexport { FontSize };\n/**\n * Configures the format settings of the RichTextEditor.\n */\nvar Format = /** @class */ (function (_super) {\n __extends(Format, _super);\n function Format() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Format.prototype, \"default\", void 0);\n __decorate([\n Property('65px')\n ], Format.prototype, \"width\", void 0);\n __decorate([\n Property(formatItems)\n ], Format.prototype, \"types\", void 0);\n return Format;\n}(ChildProperty));\nexport { Format };\n/**\n * Configures the font Color settings of the RichTextEditor.\n */\nvar FontColor = /** @class */ (function (_super) {\n __extends(FontColor, _super);\n function FontColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#ff0000')\n ], FontColor.prototype, \"default\", void 0);\n __decorate([\n Property('Palette')\n ], FontColor.prototype, \"mode\", void 0);\n __decorate([\n Property(10)\n ], FontColor.prototype, \"columns\", void 0);\n __decorate([\n Property(fontColor)\n ], FontColor.prototype, \"colorCode\", void 0);\n __decorate([\n Property(false)\n ], FontColor.prototype, \"modeSwitcher\", void 0);\n return FontColor;\n}(ChildProperty));\nexport { FontColor };\n/**\n * Configures the background Color settings of the RichTextEditor.\n */\nvar BackgroundColor = /** @class */ (function (_super) {\n __extends(BackgroundColor, _super);\n function BackgroundColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#ffff00')\n ], BackgroundColor.prototype, \"default\", void 0);\n __decorate([\n Property('Palette')\n ], BackgroundColor.prototype, \"mode\", void 0);\n __decorate([\n Property(10)\n ], BackgroundColor.prototype, \"columns\", void 0);\n __decorate([\n Property(backgroundColor)\n ], BackgroundColor.prototype, \"colorCode\", void 0);\n __decorate([\n Property(false)\n ], BackgroundColor.prototype, \"modeSwitcher\", void 0);\n return BackgroundColor;\n}(ChildProperty));\nexport { BackgroundColor };\n/**\n * Configures the numberFormatList settings of the RichTextEditor.\n */\nvar NumberFormatList = /** @class */ (function (_super) {\n __extends(NumberFormatList, _super);\n function NumberFormatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(numberFormatList)\n ], NumberFormatList.prototype, \"types\", void 0);\n return NumberFormatList;\n}(ChildProperty));\nexport { NumberFormatList };\n/**\n * Configures the bulletFormatList settings of the RichTextEditor.\n */\nvar BulletFormatList = /** @class */ (function (_super) {\n __extends(BulletFormatList, _super);\n function BulletFormatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(bulletFormatList)\n ], BulletFormatList.prototype, \"types\", void 0);\n return BulletFormatList;\n}(ChildProperty));\nexport { BulletFormatList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\n/**\n * Objects used for configuring the iframe resources properties.\n */\nvar Resources = /** @class */ (function (_super) {\n __extends(Resources, _super);\n function Resources() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], Resources.prototype, \"styles\", void 0);\n __decorate([\n Property([])\n ], Resources.prototype, \"scripts\", void 0);\n return Resources;\n}(ChildProperty));\nexport { Resources };\n/**\n * Configures the iframe settings of the RTE.\n */\nvar IFrameSettings = /** @class */ (function (_super) {\n __extends(IFrameSettings, _super);\n function IFrameSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], IFrameSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], IFrameSettings.prototype, \"attributes\", void 0);\n __decorate([\n Complex({}, Resources)\n ], IFrameSettings.prototype, \"resources\", void 0);\n return IFrameSettings;\n}(ChildProperty));\nexport { IFrameSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the inlineMode property of the RTE.\n */\nvar InlineMode = /** @class */ (function (_super) {\n __extends(InlineMode, _super);\n function InlineMode() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InlineMode.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], InlineMode.prototype, \"onSelection\", void 0);\n return InlineMode;\n}(ChildProperty));\nexport { InlineMode };\n","/* eslint-disable */\n/**\n * Export default locale\n */\nexport var defaultLocale = {\n 'alignments': 'Alignments',\n 'justifyLeft': 'Align Left',\n 'justifyCenter': 'Align Center',\n 'justifyRight': 'Align Right',\n 'justifyFull': 'Align Justify',\n 'fontName': 'Font Name',\n 'fontSize': 'Font Size',\n 'fontColor': 'Font Color',\n 'backgroundColor': 'Background Color',\n 'bold': 'Bold',\n 'italic': 'Italic',\n 'underline': 'Underline',\n 'strikethrough': 'Strikethrough',\n 'clearFormat': 'Clear Format',\n 'clearAll': 'Clear All',\n 'cut': 'Cut',\n 'copy': 'Copy',\n 'paste': 'Paste',\n 'unorderedList': 'Bulleted List',\n 'orderedList': 'Numbered List',\n 'indent': 'Increase Indent',\n 'outdent': 'Decrease Indent',\n 'undo': 'Undo',\n 'redo': 'Redo',\n 'superscript': 'Superscript',\n 'subscript': 'Subscript',\n 'createLink': 'Insert Link',\n 'openLink': 'Open Link',\n 'editLink': 'Edit Link',\n 'removeLink': 'Remove Link',\n 'image': 'Insert Image',\n 'audio': 'Insert Audio',\n 'video': 'Insert Video',\n 'replace': 'Replace',\n 'numberFormatList': 'Number Format List',\n 'bulletFormatList': 'Bullet Format List',\n 'audioReplace': 'Replace',\n 'videoReplace': 'Replace',\n 'videoAlign': 'Align',\n 'videoDimension': 'Dimension',\n 'audioRemove': 'Remove',\n 'videoRemove': 'Remove',\n 'audioLayoutOption': 'Layout option',\n 'videoLayoutOption': 'Layout option',\n 'align': 'Align',\n 'caption': 'Image Caption',\n 'remove': 'Remove',\n 'insertLink': 'Insert Link',\n 'display': 'Display',\n 'altText': 'Alternative Text',\n 'dimension': 'Change Size',\n 'fullscreen': 'Maximize',\n 'maximize': 'Maximize',\n 'minimize': 'Minimize',\n 'lowerCase': 'Lower Case',\n 'upperCase': 'Upper Case',\n 'print': 'Print',\n 'formats': 'Formats',\n 'sourcecode': 'Code View',\n 'preview': 'Preview',\n 'viewside': 'ViewSide',\n 'insertCode': 'Insert Code',\n 'linkText': 'Display Text',\n 'linkTooltipLabel': 'Title',\n 'linkWebUrl': 'Web Address',\n 'linkTitle': 'Enter a title',\n 'linkurl': 'http://example.com',\n 'linkOpenInNewWindow': 'Open Link in New Window',\n 'linkHeader': 'Insert Link',\n 'dialogInsert': 'Insert',\n 'dialogCancel': 'Cancel',\n 'dialogUpdate': 'Update',\n 'imageHeader': 'Insert Image',\n 'audioHeader': 'Insert Audio',\n 'videoHeader': 'Insert Video',\n 'imageLinkHeader': 'You can also provide a link from the web',\n 'audioLinkHeader': 'You can also provide a link from the web',\n 'videoLinkHeader': 'Web URL',\n 'embedVideoLinkHeader': 'Media Embed URL',\n 'mdimageLink': 'Please provide a URL for your image',\n 'imageUploadMessage': 'Drop image here or browse to upload',\n 'audioUploadMessage': 'Drop an audio file or browse to upload',\n 'videoUploadMessage': 'Drop a video file or browse to upload',\n 'imageDeviceUploadMessage': 'Click here to upload',\n 'audioDeviceUploadMessage': 'Click here to upload',\n 'videoDeviceUploadMessage': 'Click here to upload',\n 'imageAlternateText': 'Alternate Text',\n 'alternateHeader': 'Alternative Text',\n 'browse': 'Browse',\n 'imageUrl': 'http://example.com/image.png',\n 'audioUrl': 'http://example.com/audio.mp3',\n 'videoUrl': 'http://example.com/video.mp3',\n 'webUrl': 'Web URL',\n 'embedUrl': 'Embed Code',\n 'imageCaption': 'Caption',\n 'imageSizeHeader': 'Image Size',\n 'videoSizeHeader': 'Video Size',\n 'imageHeight': 'Height',\n 'imageWidth': 'Width',\n 'videoHeight': 'Height',\n 'videoWidth': 'Width',\n 'textPlaceholder': 'Enter Text',\n 'inserttablebtn': 'Insert Table',\n 'tabledialogHeader': 'Insert Table',\n 'tableWidth': 'Width',\n 'cellpadding': 'Cell Padding',\n 'cellspacing': 'Cell Spacing',\n 'columns': 'Number of columns',\n 'rows': 'Number of rows',\n 'tableRows': 'Table Rows',\n 'tableColumns': 'Table Columns',\n 'tableCellHorizontalAlign': 'Table Cell Horizontal Align',\n 'tableCellVerticalAlign': 'Table Cell Vertical Align',\n 'createTable': 'Create Table',\n 'removeTable': 'Remove Table',\n 'tableHeader': 'Table Header',\n 'tableRemove': 'Table Remove',\n 'tableCellBackground': 'Table Cell Background',\n 'tableEditProperties': 'Table Edit Properties',\n 'styles': 'Styles',\n 'insertColumnLeft': 'Insert Column Left',\n 'insertColumnRight': 'Insert Column Right',\n 'deleteColumn': 'Delete Column',\n 'insertRowBefore': 'Insert Row Before',\n 'insertRowAfter': 'Insert Row After',\n 'deleteRow': 'Delete Row',\n 'tableEditHeader': 'Edit Table',\n 'TableHeadingText': 'Heading',\n 'TableColText': 'Col',\n 'imageInsertLinkHeader': 'Insert Link',\n 'editImageHeader': 'Edit Image',\n 'editAudioHeader': 'Edit Audio',\n 'editVideoHeader': 'Edit Video',\n \"alignmentsDropDownLeft\": 'Align Left',\n \"alignmentsDropDownCenter\": 'Align Center',\n \"alignmentsDropDownRight\": 'Align Right',\n \"alignmentsDropDownJustify\": 'Align Justify',\n \"imageDisplayDropDownInline\": 'Inline',\n \"imageDisplayDropDownBreak\": 'Break',\n \"audioLayoutOptionDropDownInline\": 'Inline',\n \"audioLayoutOptionDropDownBreak\": 'Break',\n \"videoLayoutOptionDropDownInline\": 'Inline',\n \"videoLayoutOptionDropDownBreak\": 'Break',\n \"tableInsertRowDropDownBefore\": 'Insert row before',\n \"tableInsertRowDropDownAfter\": 'Insert row after',\n \"tableInsertRowDropDownDelete\": 'Delete row',\n \"tableInsertColumnDropDownLeft\": 'Insert column left',\n \"tableInsertColumnDropDownRight\": 'Insert column right',\n \"tableInsertColumnDropDownDelete\": 'Delete column',\n \"tableVerticalAlignDropDownTop\": 'Align Top',\n \"tableVerticalAlignDropDownMiddle\": 'Align Middle',\n \"tableVerticalAlignDropDownBottom\": 'Align Bottom',\n \"tableStylesDropDownDashedBorder\": 'Dashed Borders',\n \"tableStylesDropDownAlternateRows\": 'Alternate Rows',\n 'pasteFormat': 'Paste Format',\n 'pasteFormatContent': 'Choose the formatting action',\n 'plainText': 'Plain Text',\n 'cleanFormat': 'Clean',\n 'keepFormat': 'Keep',\n 'pasteDialogOk': 'OK',\n 'pasteDialogCancel': 'Cancel',\n 'fileManager': 'File Manager',\n 'fileDialogHeader': 'File Browser',\n \"formatsDropDownParagraph\": 'Paragraph',\n 'formatsDropDownCode': 'Code',\n 'formatsDropDownQuotation': 'Quotation',\n 'formatsDropDownHeading1': 'Heading 1',\n 'formatsDropDownHeading2': 'Heading 2',\n 'formatsDropDownHeading3': 'Heading 3',\n 'formatsDropDownHeading4': 'Heading 4',\n 'fontNameSegoeUI': 'Segoe UI',\n 'fontNameArial': 'Arial',\n 'fontNameGeorgia': 'Georgia',\n 'fontNameImpact': 'Impact',\n 'fontNameTahoma': 'Tahoma',\n 'fontNameTimesNewRoman': 'Times New Roman',\n 'fontNameVerdana': 'Verdana',\n 'numberFormatListNumber': 'Number',\n 'numberFormatListLowerAlpha': 'LowerAlpha',\n 'numberFormatListUpperAlpha': 'UpperAlpha',\n 'numberFormatListLowerRoman': 'LowerRoman',\n 'numberFormatListUpperRoman': 'UpperRoman',\n 'numberFormatListLowerGreek': 'LowerGreek',\n 'bulletFormatListDisc': 'Disc',\n 'bulletFormatListCircle': 'Circle',\n 'bulletFormatListSquare': 'Square',\n 'numberFormatListNone': 'None',\n 'bulletFormatListNone': 'None',\n 'formatPainter': 'Format Painter'\n};\nexport var toolsLocale = {\n 'alignments': 'alignments',\n 'justifyleft': 'justifyLeft',\n 'justifycenter': 'justifyCenter',\n 'justifyright': 'justifyRight',\n 'justifyfull': 'justifyFull',\n 'fontname': 'fontName',\n 'fontsize': 'fontSize',\n 'fontcolor': 'fontColor',\n 'backgroundcolor': 'backgroundColor',\n 'bold': 'bold',\n 'italic': 'italic',\n 'underline': 'underline',\n 'strikethrough': 'strikethrough',\n 'clearformat': 'clearFormat',\n 'clearall': 'clearAll',\n 'cut': 'cut',\n 'copy': 'copy',\n 'paste': 'paste',\n 'unorderedlist': 'unorderedList',\n 'orderedlist': 'orderedList',\n 'indent': 'indent',\n 'outdent': 'outdent',\n 'numberformatlist': 'numberFormatList',\n 'bulletformatlist': 'bulletFormatList',\n 'undo': 'undo',\n 'redo': 'redo',\n 'superscript': 'superscript',\n 'subscript': 'subscript',\n 'createlink': 'createLink',\n 'openlink': 'openLink',\n 'editlink': 'editLink',\n 'removelink': 'removeLink',\n 'openimagelink': 'openLink',\n 'editimagelink': 'editLink',\n 'removeimagelink': 'removeLink',\n 'image': 'image',\n 'audio': 'audio',\n 'video': 'video',\n 'replace': 'replace',\n 'audioreplace': 'audioReplace',\n 'videoreplace': 'videoReplace',\n 'videoalign': 'videoAlign',\n 'videodimension': 'videoDimension',\n 'audioremove': 'audioRemove',\n 'videoremove': 'videoRemove',\n 'audiolayoutoption': 'audioLayoutOption',\n 'videolayoutoption': 'videoLayoutOption',\n 'align': 'align',\n 'caption': 'caption',\n 'remove': 'remove',\n 'insertlink': 'insertLink',\n 'display': 'display',\n 'alttext': 'altText',\n 'dimension': 'dimension',\n 'fullscreen': 'fullscreen',\n 'maximize': 'maximize',\n 'minimize': 'minimize',\n 'lowercase': 'lowerCase',\n 'uppercase': 'upperCase',\n 'print': 'print',\n 'formats': 'formats',\n 'sourcecode': 'sourcecode',\n 'preview': 'preview',\n 'viewside': 'viewside',\n 'insertcode': 'insertCode',\n 'tablerows': 'tableRows',\n 'tablecolumns': 'tableColumns',\n 'tablecellhorizontalalign': 'tableCellHorizontalAlign',\n 'tablecellverticalalign': 'tableCellVerticalAlign',\n 'createtable': 'createTable',\n 'removetable': 'removeTable',\n 'tableheader': 'tableHeader',\n 'tableremove': 'tableRemove',\n 'tablecellbackground': 'tableCellBackground',\n 'tableeditproperties': 'tableEditProperties',\n 'styles': 'styles',\n 'insertcolumnleft': 'insertColumnLeft',\n 'insertcolumnright': 'insertColumnRight',\n 'deletecolumn': 'deleteColumn',\n 'aligntop': 'AlignTop',\n 'alignmiddle': 'AlignMiddle',\n 'alignbottom': 'AlignBottom',\n 'insertrowbefore': 'insertRowBefore',\n 'insertrowafter': 'insertRowAfter',\n 'deleterow': 'deleteRow',\n 'formatpainter': 'formatPainter'\n};\nexport var fontNameLocale = [\n { locale: 'fontNameSegoeUI', value: 'Segoe UI' },\n { locale: 'fontNameArial', value: 'Arial,Helvetica,sans-serif' },\n { locale: 'fontNameGeorgia', value: 'Georgia,serif' },\n { locale: 'fontNameImpact', value: 'Impact,Charcoal,sans-serif' },\n { locale: 'fontNameTahoma', value: 'Tahoma,Geneva,sans-serif' },\n { locale: 'fontNameTimesNewRoman', value: 'Times New Roman,Times,serif' },\n { locale: 'fontNameVerdana', value: 'Verdana,Geneva,sans-serif' }\n];\nexport var formatsLocale = [\n { locale: 'formatsDropDownParagraph', value: 'P' },\n { locale: 'formatsDropDownCode', value: 'Pre' },\n { locale: 'formatsDropDownQuotation', value: 'BlockQuote' },\n { locale: 'formatsDropDownHeading1', value: 'H1' },\n { locale: 'formatsDropDownHeading2', value: 'H2' },\n { locale: 'formatsDropDownHeading3', value: 'H3' },\n { locale: 'formatsDropDownHeading4', value: 'H4' }\n];\nexport var numberFormatListLocale = [\n { locale: 'numberFormatListNone', value: 'none' },\n { locale: 'numberFormatListNumber', value: 'decimal' },\n { locale: 'numberFormatListLowerAlpha', value: 'lower-alpha' },\n { locale: 'numberFormatListUpperAlpha', value: 'upper-alpha' },\n { locale: 'numberFormatListLowerRoman', value: 'lower-roman' },\n { locale: 'numberFormatListUpperRoman', value: 'upper-roman' },\n { locale: 'numberFormatListLowerGreek', value: 'lower-greek' }\n];\nexport var bulletFormatListLocale = [\n { locale: 'bulletFormatListNone', value: 'none' },\n { locale: 'bulletFormatListDisc', value: 'disc' },\n { locale: 'bulletFormatListCircle', value: 'circle' },\n { locale: 'bulletFormatListSquare', value: 'square' },\n];\n","/**\n * @param {string} htmlAttributes - specifies the string value\n * @param {IRichTextEditor} rte - specifies the rte value\n * @param {boolean} isFrame - specifies the boolean value\n * @param {boolean} initial - specifies the boolean value\n * @returns {void}\n * @hidden\n */\nexport function setAttributes(htmlAttributes, rte, isFrame, initial) {\n var target;\n if (isFrame) {\n var iFrame = rte.contentModule.getDocument();\n target = iFrame.querySelector('body');\n }\n else {\n target = rte.element;\n }\n if (Object.keys(htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n target.classList.add(htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n rte.enabled = false;\n rte.setEnable();\n }\n else if (htmlAttr === 'readonly' && htmlAttributes[\"\" + htmlAttr] === 'readonly') {\n rte.readonly = true;\n rte.setReadOnly(initial);\n }\n else if (htmlAttr === 'style') {\n target.setAttribute('style', htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'tabindex') {\n rte.inputElement.setAttribute('tabindex', htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'placeholder') {\n rte.placeholder = htmlAttributes[\"\" + htmlAttr];\n rte.setPlaceHolder();\n }\n else {\n var validateAttr = ['name', 'required'];\n if (validateAttr.indexOf(htmlAttr) > -1) {\n rte.valueContainer.setAttribute(htmlAttr, htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n target.setAttribute(htmlAttr, htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n}\n","import { Browser, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\n/**\n * `FullScreen` module is used to maximize and minimize screen\n */\nvar FullScreen = /** @class */ (function () {\n function FullScreen(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * showFullScreen method\n *\n * @param {MouseEvent} event - specifies the mouse event\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.showFullScreen = function (event) {\n var _this = this;\n if (this.parent.toolbarSettings.enable === true && this.parent.editorMode !== 'Markdown'\n && !isNOU(this.parent.quickToolbarModule)) {\n this.parent.quickToolbarModule.hideQuickToolbars();\n }\n this.scrollableParent = getScrollableParent(this.parent.element);\n if (!this.parent.element.classList.contains(classes.CLS_FULL_SCREEN)) {\n var evenArgs = {\n cancel: false,\n requestType: 'Maximize',\n targetItem: 'Maximize',\n args: event\n };\n this.parent.trigger(events.actionBegin, evenArgs, function (beginEventArgs) {\n if (!beginEventArgs.cancel) {\n if (_this.parent.toolbarSettings.enableFloating &&\n !_this.parent.inlineMode.enable && _this.parent.toolbarSettings.enable) {\n _this.parent.getToolbarElement().style.width = '100%';\n _this.parent.getToolbarElement().style.top = '0px';\n }\n _this.parent.element.classList.add(classes.CLS_FULL_SCREEN);\n _this.toggleParentOverflow(true);\n var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n _this.parent.setContentHeight(null, isExpand);\n if (_this.parent.toolbarModule) {\n if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {\n _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);\n }\n if (Browser.isDevice) {\n _this.parent.toolbarModule.removeFixedTBarClass();\n }\n _this.parent.toolbarModule.updateItem({\n targetItem: 'Maximize',\n updateItem: 'Minimize',\n baseToolbar: _this.parent.getBaseToolbarObject()\n });\n }\n _this.parent.refreshUI();\n _this.parent.trigger(events.actionComplete, { requestType: 'Maximize', targetItem: 'Maximize', args: event });\n }\n });\n }\n };\n /**\n * hideFullScreen method\n *\n * @param {MouseEvent} event - specifies the mouse event\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.hideFullScreen = function (event) {\n var _this = this;\n if (this.parent.toolbarSettings.enable === true && this.parent.editorMode !== 'Markdown'\n && !isNOU(this.parent.quickToolbarModule)) {\n this.parent.quickToolbarModule.hideQuickToolbars();\n }\n if (this.parent.element.classList.contains(classes.CLS_FULL_SCREEN)) {\n var evenArgs = {\n cancel: false,\n requestType: 'Minimize',\n targetItem: 'Minimize',\n args: event\n };\n this.parent.trigger(events.actionBegin, evenArgs, function (beginEventArgs) {\n if (!beginEventArgs.cancel) {\n _this.parent.element.classList.remove(classes.CLS_FULL_SCREEN);\n var elem = document.querySelectorAll('.e-rte-overflow');\n for (var i = 0; i < elem.length; i++) {\n removeClass([elem[i]], ['e-rte-overflow']);\n }\n var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n _this.parent.setContentHeight(null, isExpand);\n if (_this.parent.toolbarModule) {\n if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {\n _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);\n }\n _this.parent.toolbarModule.updateItem({\n targetItem: 'Minimize',\n updateItem: 'Maximize',\n baseToolbar: _this.parent.getBaseToolbarObject()\n });\n if (Browser.isDevice && _this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.addFixedTBarClass();\n }\n }\n _this.parent.trigger(events.actionComplete, { requestType: 'Minimize', targetItem: 'Minimize', args: event });\n }\n });\n }\n };\n // eslint-disable-next-line\n FullScreen.prototype.toggleParentOverflow = function (isAdd) {\n if (isNOU(this.scrollableParent)) {\n return;\n }\n for (var i = 0; i < this.scrollableParent.length; i++) {\n if (this.scrollableParent[i].nodeName === '#document') {\n var elem = document.querySelector('body');\n addClass([elem], ['e-rte-overflow']);\n }\n else {\n var elem = this.scrollableParent[i];\n addClass([elem], ['e-rte-overflow']);\n }\n }\n };\n FullScreen.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n switch (originalEvent.action) {\n case 'full-screen':\n this.showFullScreen(event.args);\n originalEvent.preventDefault();\n break;\n case 'escape':\n this.hideFullScreen(event.args);\n originalEvent.preventDefault();\n break;\n }\n };\n FullScreen.prototype.addEventListener = function () {\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n FullScreen.prototype.removeEventListener = function () {\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n /**\n * destroy method\n *\n * @returns {void}\n * @hidden\n\n */\n FullScreen.prototype.destroy = function () {\n if (this.parent.element.classList.contains(classes.CLS_FULL_SCREEN)) {\n this.toggleParentOverflow(false);\n }\n var elem = document.querySelectorAll('.e-rte-overflow');\n for (var i = 0; i < elem.length; i++) {\n removeClass([elem[i]], ['e-rte-overflow']);\n }\n this.removeEventListener();\n };\n FullScreen.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n return FullScreen;\n}());\nexport { FullScreen };\n","import { isNullOrUndefined as isNOU, detach, Browser } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `EnterKey` module is used to handle enter key press actions.\n */\nvar EnterKeyAction = /** @class */ (function () {\n function EnterKeyAction(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n EnterKeyAction.prototype.addEventListener = function () {\n this.parent.on(events.enterHandler, this.enterHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n EnterKeyAction.prototype.destroy = function () {\n this.removeEventListener();\n };\n EnterKeyAction.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n EnterKeyAction.prototype.removeEventListener = function () {\n this.parent.off(events.enterHandler, this.enterHandler);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n EnterKeyAction.prototype.getRangeNode = function () {\n this.range = this.parent.getRange();\n this.startNode = this.range.startContainer.nodeName === '#text' ? this.range.startContainer.parentElement :\n this.range.startContainer;\n this.endNode = this.range.endContainer.nodeName === '#text' ? this.range.endContainer.parentElement :\n this.range.endContainer;\n };\n EnterKeyAction.prototype.enterHandler = function (e) {\n var _this = this;\n this.getRangeNode();\n var isTableEnter = true;\n this.formatTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'];\n if (!isNOU(this.startNode.closest('TABLE')) && !isNOU(this.endNode.closest('TABLE'))) {\n isTableEnter = false;\n var curElement = this.startNode;\n var blockElement = curElement;\n while (!this.parent.formatter.editorManager.domNode.isBlockNode(curElement)) {\n curElement = curElement.parentElement;\n blockElement = curElement;\n }\n isTableEnter = blockElement.tagName === 'TD' || blockElement.tagName === 'TBODY' ? false : true;\n }\n if (e.args.which === 13 && e.args.code === 'Enter') {\n if (isNOU(this.startNode.closest('LI, UL, OL')) && isNOU(this.endNode.closest('LI, UL, OL')) && isTableEnter &&\n isNOU(this.startNode.closest('PRE')) && isNOU(this.endNode.closest('PRE'))) {\n var shiftKey_1 = e.args.shiftKey;\n var actionBeginArgs = {\n cancel: false,\n name: events.actionBegin,\n requestType: shiftKey_1 ? 'ShiftEnterAction' : 'EnterAction',\n originalEvent: e.args\n };\n this.parent.trigger(events.actionBegin, actionBeginArgs, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n if (!(_this.range.startOffset === _this.range.endOffset && _this.range.startContainer === _this.range.endContainer)) {\n if (!(_this.range.startContainer.nodeName === 'SPAN' && (_this.range.startContainer.classList.contains('e-video-wrap') ||\n _this.range.startContainer.classList.contains('e-audio-wrap')))) {\n _this.range.deleteContents();\n }\n if (_this.range.startContainer.nodeName === '#text' && _this.range.startContainer.textContent.length === 0 &&\n _this.range.startContainer.parentElement !== _this.parent.inputElement) {\n if (_this.parent.enterKey === 'BR') {\n _this.range.startContainer.parentElement.innerHTML = '​';\n }\n else {\n _this.range.startContainer.parentElement.innerHTML = '
';\n }\n }\n else if (_this.range.startContainer === _this.parent.inputElement && _this.range.startContainer.innerHTML === '') {\n _this.range.startContainer.innerHTML = '
';\n var focusElem = _this.range.startContainer.childNodes[_this.range.startOffset];\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, 0);\n }\n else if (_this.parent.inputElement === _this.range.startContainer) {\n var focusElem = _this.range.startContainer.childNodes[_this.range.startOffset];\n if (focusElem.nodeName === '#text' && focusElem.textContent.length === 0) {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.textContent.length === 0 ? 0 : focusElem.previousSibling.textContent.length);\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.textContent.length >= 0 ? 0 : 1);\n if (focusElem.previousSibling.textContent.length === 0) {\n detach(focusElem.previousSibling);\n if (!shiftKey_1) {\n var currentFocusElem = !isNOU(focusElem.lastChild) ? focusElem.lastChild : focusElem;\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text' && currentFocusElem.nodeName !== 'BR') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n if (currentFocusElem.nodeName !== 'BR' && currentFocusElem.parentElement.textContent.length === 0 && currentFocusElem.parentElement.innerHTML.length === 0 &&\n currentFocusElem.parentElement.nodeName !== 'BR') {\n currentFocusElem.parentElement.appendChild(_this.parent.createElement('BR'));\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem.nodeName === 'BR' ? currentFocusElem : currentFocusElem.parentElement, currentFocusElem.parentElement.textContent.length >= 0 || currentFocusElem.nodeName === 'BR' ? 0 : 1);\n }\n }\n else if (focusElem.textContent.length === 0) {\n var currentFocusElem = focusElem.previousSibling.nodeName === '#text' ? focusElem.previousSibling : focusElem.previousSibling.lastChild;\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem, currentFocusElem.textContent.length);\n detach(focusElem);\n }\n else if (_this.parent.enterKey !== 'BR' &&\n focusElem.previousSibling.textContent.length !== 0 && focusElem.textContent.length !== 0) {\n e.args.preventDefault();\n return;\n }\n }\n _this.getRangeNode();\n }\n }\n if (_this.range.startContainer === _this.range.endContainer &&\n _this.range.startOffset === _this.range.endOffset && _this.range.startContainer === _this.parent.inputElement) {\n if (!(_this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE')) {\n if (isNOU(_this.range.startContainer.childNodes[_this.range.startOffset])) {\n var currentLastElem = _this.range.startContainer.childNodes[_this.range.startOffset - 1];\n while (currentLastElem.lastChild !== null && currentLastElem.nodeName !== '#text') {\n currentLastElem = currentLastElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentLastElem, (currentLastElem.nodeName === 'BR' ? 0 : currentLastElem.textContent.length));\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.range.startContainer.childNodes[_this.range.startOffset], 0);\n }\n }\n _this.getRangeNode();\n }\n if ((_this.parent.enterKey === 'P' && !shiftKey_1) || (_this.parent.enterKey === 'DIV' && !shiftKey_1) ||\n (_this.parent.shiftEnterKey === 'P' && shiftKey_1) ||\n (_this.parent.shiftEnterKey === 'DIV' && shiftKey_1)) {\n if (_this.range.startOffset === 1 && _this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE') {\n var newElem = _this.createInsertElement(shiftKey_1);\n newElem.appendChild(_this.parent.createElement('BR'));\n _this.parent.inputElement.appendChild(newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, 0);\n }\n else {\n var nearBlockNode = void 0;\n if (isTableEnter && _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode)) {\n nearBlockNode = _this.startNode;\n }\n else {\n nearBlockNode = _this.parent.formatter.editorManager.domNode.blockParentNode(_this.startNode);\n }\n var isMediaNode = false; // To check the image audio and video node cases\n var isFocusedFirst = false;\n if (_this.range.startOffset !== 0 && _this.range.endOffset !== 0 &&\n _this.range.startContainer === _this.range.endContainer && !(!isNOU(nearBlockNode.childNodes[0])\n && nearBlockNode.childNodes[0].nodeName === 'IMG' && nearBlockNode.querySelectorAll('img, audio, video').length > 0)) {\n var startNodeText = _this.range.startContainer.textContent;\n var splitFirstText = startNodeText.substring(0, _this.range.startOffset);\n // eslint-disable-next-line max-len\n if (splitFirstText.charCodeAt(_this.range.startOffset - 1) !== 160 && splitFirstText.trim().length === 0) {\n isFocusedFirst = true;\n }\n }\n else if (_this.range.startOffset === 0 && _this.range.endOffset === 0) {\n isFocusedFirst = true;\n }\n _this.removeBRElement(nearBlockNode);\n var fireFoxEnterAtMiddle = Browser.userAgent.indexOf('Firefox') !== -1 && _this.range.startOffset === 0 && _this.range.startContainer === _this.range.endContainer &&\n _this.range.startContainer.nodeName === '#text' && !_this.parent.formatter.editorManager.domNode.isBlockNode(_this.range.startContainer.previousSibling) &&\n _this.range.startContainer.parentElement === _this.range.startContainer.previousSibling.parentElement;\n // eslint-disable-next-line max-len\n if (!fireFoxEnterAtMiddle && ((_this.range.startOffset === 0 && _this.range.endOffset === 0) || isFocusedFirst) &&\n !(!isNOU(_this.range.startContainer.previousSibling) &&\n (_this.range.startContainer.previousSibling.nodeName === 'IMG' || _this.range.startContainer.previousSibling.nodeName === 'BR'))) {\n var isNearBlockLengthZero = void 0;\n var newElem = void 0;\n if (!isNOU(_this.range.startContainer.childNodes) && _this.range.startContainer.textContent.length === 0\n && (_this.range.startContainer.querySelectorAll('img, audio, video').length > 0 ||\n _this.range.startContainer.nodeName === 'IMG' || _this.range.startContainer.nodeName === 'TABLE')) {\n newElem = _this.createInsertElement(shiftKey_1);\n isMediaNode = true;\n isNearBlockLengthZero = false;\n }\n else {\n if ((nearBlockNode.textContent.trim().length !== 0 ||\n nearBlockNode.childNodes[0].nodeName === 'IMG' ||\n (nearBlockNode.textContent.trim() === '' && nearBlockNode.querySelectorAll('img, audio, video').length > 0))) {\n if ((_this.range.startOffset === _this.range.endOffset && _this.range.startOffset !== 0)) {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);\n }\n else {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);\n isMediaNode = true;\n }\n isNearBlockLengthZero = false;\n }\n else {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);\n isNearBlockLengthZero = true;\n }\n }\n var insertElem = void 0;\n if (_this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase()) < 0) {\n insertElem = _this.createInsertElement(shiftKey_1);\n }\n else {\n insertElem = _this.parent.createElement(newElem.nodeName);\n }\n while (newElem.firstChild) {\n insertElem.appendChild(newElem.firstChild);\n }\n nearBlockNode.parentElement.insertBefore(insertElem, nearBlockNode);\n if (!isNearBlockLengthZero) {\n var currentFocusElem = insertElem;\n var finalFocusElem = void 0;\n if (_this.range.startOffset === _this.range.endOffset && _this.range.startOffset !== 0) {\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text' &&\n currentFocusElem.nodeName !== 'BR') {\n finalFocusElem = currentFocusElem;\n currentFocusElem = currentFocusElem.lastChild;\n }\n }\n else {\n finalFocusElem = currentFocusElem;\n }\n finalFocusElem.innerHTML = '
';\n if (!isMediaNode) {\n detach(nearBlockNode);\n }\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem.nextElementSibling, 0);\n }\n else if (nearBlockNode.textContent.length === 0 && !(!isNOU(nearBlockNode.childNodes[0]) && nearBlockNode.childNodes[0].nodeName === 'IMG')) {\n if (!isNOU(nearBlockNode.children[0]) && nearBlockNode.children[0].tagName !== 'BR') {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(newElem, nearBlockNode);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, newElem.textContent.length >= 0 ? 0 : 1);\n }\n else {\n var insertElem = _this.createInsertElement(shiftKey_1);\n insertElem.innerHTML = '
';\n _this.parent.formatter.editorManager.domNode.insertAfter(insertElem, nearBlockNode);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem, 0);\n }\n }\n else if (_this.range.startContainer === _this.range.endContainer && _this.range.startContainer.nodeName === 'SPAN' &&\n (_this.range.startContainer.classList.contains('e-video-wrap') ||\n _this.range.startContainer.classList.contains('e-audio-wrap'))) {\n if (nearBlockNode.textContent.trim().length > 0) {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n var audioVideoElem = !isNOU(newElem.previousSibling.querySelector('.e-video-wrap')) ?\n newElem.previousSibling.querySelector('.e-video-wrap') : newElem.previousSibling.querySelector('.e-audio-wrap');\n var isBRInserted = false;\n var lastNode = audioVideoElem.previousSibling;\n while (!isNOU(lastNode) && lastNode.nodeName !== '#text') {\n lastNode = lastNode.lastChild;\n }\n if (isNOU(lastNode)) {\n var brElm = _this.parent.createElement('br');\n audioVideoElem.parentElement.appendChild(brElm);\n isBRInserted = true;\n }\n if (isBRInserted) {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), audioVideoElem.parentElement, 0);\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), lastNode, lastNode.textContent.length);\n }\n detach(audioVideoElem);\n }\n else {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n var focusElem = newElem.previousSibling;\n while (!isNOU(focusElem.firstChild)) {\n detach(focusElem.firstChild);\n }\n var brElm = _this.parent.createElement('br');\n focusElem.appendChild(brElm);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, 0);\n }\n if (!isNOU(_this.parent.audioModule)) {\n _this.parent.audioModule.hideAudioQuickToolbar();\n }\n if (!isNOU(_this.parent.videoModule)) {\n _this.parent.videoModule.hideVideoQuickToolbar();\n }\n }\n else {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n if (!isNOU(newElem.childNodes[0]) && newElem.childNodes[0].nodeName === '#text' &&\n newElem.childNodes[0].textContent.length === 0) {\n detach(newElem.childNodes[0]);\n }\n if (newElem.textContent.trim().length === 0) {\n var brElm = _this.parent.createElement('br');\n if (_this.startNode.nodeName === 'A') {\n var startParentElem = _this.startNode.parentElement;\n _this.startNode.parentElement.insertBefore(brElm, _this.startNode);\n detach(_this.startNode);\n _this.startNode = startParentElem;\n }\n else {\n if (_this.startNode.nodeName !== 'BR') {\n _this.startNode.appendChild(brElm);\n }\n }\n if (newElem.childNodes[0].textContent === '\\n') {\n detach(newElem.childNodes[0]);\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.startNode, 0);\n }\n if (((_this.parent.enterKey === 'P' || _this.parent.enterKey === 'DIV') && !shiftKey_1) || ((_this.parent.shiftEnterKey === 'DIV' ||\n _this.parent.shiftEnterKey === 'P') && shiftKey_1)) {\n var isHeadingTag = _this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase());\n if ((isHeadingTag < 0) || (isHeadingTag >= 0 && newElem.textContent.trim().length === 0)) {\n var insertElm = _this.createInsertElement(shiftKey_1);\n while (newElem.firstChild) {\n insertElm.appendChild(newElem.firstChild);\n }\n _this.parent.formatter.editorManager.domNode.insertAfter(insertElm, newElem);\n detach(newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode) ?\n insertElm : _this.startNode, 0);\n }\n }\n }\n }\n e.args.preventDefault();\n }\n if ((_this.parent.enterKey === 'BR' && !shiftKey_1) || (_this.parent.shiftEnterKey === 'BR' && shiftKey_1)) {\n var currentParent = void 0;\n if (!_this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode)) {\n var currentNode = _this.startNode;\n var previousNode = currentNode;\n while (!_this.parent.formatter.editorManager.domNode.isBlockNode(currentNode)) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n currentParent = currentNode === _this.parent.inputElement ?\n previousNode : currentNode;\n }\n else {\n currentParent = _this.startNode;\n }\n _this.removeBRElement(currentParent);\n var isEmptyBrInserted = false;\n var currentParentLastChild = currentParent.lastChild;\n while (!isNOU(currentParentLastChild) && !(currentParentLastChild.nodeName === '#text' || currentParentLastChild.nodeName === 'BR'\n || currentParentLastChild.nodeName === 'IMG')) {\n currentParentLastChild = currentParentLastChild.lastChild;\n }\n var isLastNodeLength = _this.range.startContainer === currentParentLastChild ?\n _this.range.startContainer.textContent.length : currentParent.textContent.length;\n var isImageElement = (_this.range.startContainer.nodeName === 'IMG' || (_this.range.startContainer.childNodes.length > 0\n && _this.range.startContainer.childNodes[_this.range.startOffset].nodeName === 'IMG'));\n if (currentParent !== _this.parent.inputElement &&\n _this.parent.formatter.editorManager.domNode.isBlockNode(currentParent) &&\n _this.range.startOffset === _this.range.endOffset &&\n (_this.range.startOffset === isLastNodeLength ||\n (currentParent.textContent.trim().length === 0 && isImageElement))) {\n var focusBRElem = _this.parent.createElement('br');\n if (_this.range.startOffset === 0 && _this.range.startContainer.nodeName === 'TABLE') {\n _this.range.startContainer.parentElement.insertBefore(focusBRElem, _this.range.startContainer);\n }\n else {\n if (currentParentLastChild.nodeName === 'BR' && currentParent.textContent.length === 0) {\n _this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, currentParentLastChild);\n }\n else if (_this.range.startOffset === 0 && _this.range.endOffset === 0 && isImageElement) {\n var imageElement = _this.range.startContainer.nodeName === 'IMG' ? _this.range.startContainer :\n _this.range.startContainer.childNodes[_this.range.startOffset];\n currentParent.insertBefore(focusBRElem, imageElement);\n focusBRElem = imageElement;\n }\n else {\n var lineBreakBRElem = _this.parent.createElement('br');\n _this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, _this.range.startContainer);\n _this.parent.formatter.editorManager.domNode.insertAfter(lineBreakBRElem, _this.range.startContainer);\n }\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusBRElem, 0);\n }\n else if (!isNOU(currentParent) && currentParent !== _this.parent.inputElement && currentParent.nodeName !== 'BR') {\n if (currentParent.textContent.trim().length === 0 || (currentParent.textContent.trim().length === 1 &&\n currentParent.textContent.charCodeAt(0) === 8203)) {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, currentParent, true).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(newElem, currentParent);\n var outerBRElem = _this.parent.createElement('br');\n newElem.parentElement.insertBefore(outerBRElem, newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, 0);\n }\n else {\n var newElem = void 0;\n var outerBRElem = _this.parent.createElement('br');\n if (_this.range.startOffset === 0 && _this.range.endOffset === 0 &&\n !isNOU(currentParent.previousSibling) && currentParent.previousSibling.nodeName === 'BR') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, currentParent, false).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(outerBRElem, currentParent);\n _this.insertFocusContent();\n var currentFocusElem = outerBRElem.nextSibling;\n while (!isNOU(currentFocusElem) && currentFocusElem.nodeName !== '#text') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem, 0);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isEmptyBrInserted = true;\n }\n else {\n _this.insertBRElement();\n }\n }\n }\n else {\n _this.insertBRElement();\n }\n e.args.preventDefault();\n }\n _this.parent.trigger(events.actionComplete, { requestType: shiftKey_1 ? 'ShiftEnterAction' : 'EnterAction', args: e.args });\n }\n });\n }\n }\n };\n EnterKeyAction.prototype.removeBRElement = function (currentElement) {\n if (Browser.userAgent.indexOf('Firefox') !== -1 &&\n this.range.endOffset === currentElement.textContent.length && (currentElement.textContent.length !== 0 ||\n currentElement.querySelectorAll('BR').length > 1) &&\n !isNOU(currentElement.lastChild) && currentElement.lastChild.nodeName === 'BR') {\n detach(currentElement.lastChild);\n }\n };\n EnterKeyAction.prototype.insertBRElement = function () {\n var isEmptyBrInserted = false;\n var isFocusTextNode = true;\n if (this.range.endContainer.textContent.length === 0 && this.range.startContainer.nodeName === 'BR') {\n isFocusTextNode = false;\n }\n var brElm = this.parent.createElement('br');\n if (this.startNode.nodeName === 'BR' && this.endNode.nodeName === 'BR' && this.range.startOffset === 0 && this.range.startOffset === this.range.endOffset) {\n this.parent.formatter.editorManager.domNode.insertAfter(brElm, this.startNode);\n isEmptyBrInserted = true;\n }\n else {\n if (this.startNode === this.parent.inputElement && !isNOU(this.range.startContainer.previousSibling) &&\n this.range.startContainer.previousSibling.nodeName === 'BR' && this.range.startContainer.textContent.length === 0) {\n isEmptyBrInserted = true;\n }\n this.range.insertNode(brElm);\n }\n if (isEmptyBrInserted || (!isNOU(brElm.nextElementSibling) && brElm.nextElementSibling.tagName === 'BR') || (!isNOU(brElm.nextSibling) && brElm.nextSibling.textContent.length > 0)) {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), !isNOU(brElm.nextSibling) && isFocusTextNode ? brElm.nextSibling : brElm, 0);\n isEmptyBrInserted = false;\n }\n else {\n var brElm2 = this.parent.createElement('br');\n this.range.insertNode(brElm2);\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), brElm, 0);\n }\n };\n EnterKeyAction.prototype.insertFocusContent = function () {\n if (this.range.startContainer.textContent.length === 0) {\n if (this.range.startContainer.nodeName === '#text') {\n this.range.startContainer.parentElement.innerHTML = '​';\n }\n else {\n this.range.startContainer.innerHTML = '​';\n }\n }\n };\n EnterKeyAction.prototype.createInsertElement = function (shiftKey) {\n var insertElem;\n if ((this.parent.enterKey === 'DIV' && !shiftKey) || (this.parent.shiftEnterKey === 'DIV' && shiftKey)) {\n insertElem = this.parent.createElement('div');\n }\n else if ((this.parent.enterKey === 'P' && !shiftKey) || (this.parent.shiftEnterKey === 'P' && shiftKey)) {\n insertElem = this.parent.createElement('p');\n }\n return insertElem;\n };\n return EnterKeyAction;\n}());\nexport { EnterKeyAction };\n","/**\n * Defines util methods used by Rich Text Editor.\n */\nimport { isNullOrUndefined as isNOU, addClass, removeClass, selectAll, createElement } from '@syncfusion/ej2-base';\nimport { Browser, detach, SanitizeHtmlHelper, extend } from '@syncfusion/ej2-base';\nimport * as classes from '../base/classes';\nimport * as CONSTANT from '../base/constant';\nimport * as model from '../models/items';\nimport { toolsLocale, fontNameLocale, formatsLocale, numberFormatListLocale, bulletFormatListLocale } from '../models/default-locale';\nvar undoRedoItems = ['Undo', 'Redo'];\nvar inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n/**\n * @param {string} val - specifies the string value\n * @param {string} items - specifies the value\n * @returns {number} - returns the number value\n * @hidden\n */\nexport function getIndex(val, items) {\n var index = -1;\n items.some(function (item, i) {\n if (typeof item === 'string' && val === item.toLocaleLowerCase()) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n}\n/**\n * @param {Element} element - specifies the element\n * @param {string} className - specifies the string value\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nexport function hasClass(element, className) {\n var hasClass = false;\n if (element.classList.contains(className)) {\n hasClass = true;\n }\n return hasClass;\n}\n/**\n * @param {IDropDownItemModel} items - specifies the item model\n * @param {string} value - specifies the string value\n * @param {string} type - specifies the string value\n * @param {string} returnType - specifies the return type\n * @returns {string} - returns the string value\n * @hidden\n */\nexport function getDropDownValue(items, value, type, returnType) {\n var data;\n var result;\n for (var k = 0; k < items.length; k++) {\n if (type === 'value' && items[k].value.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n else if (type === 'text' && items[k].text.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n else if (type === 'subCommand' && items[k].subCommand.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n }\n if (!isNOU(data)) {\n switch (returnType) {\n case 'text':\n result = data.text;\n break;\n case 'value':\n result = data.value;\n break;\n case 'iconCss':\n result = data.iconCss;\n break;\n }\n }\n return result;\n}\n/**\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nexport function isIDevice() {\n var result = false;\n if (Browser.isDevice && Browser.isIos) {\n result = true;\n }\n return result;\n}\n/**\n * @param {string} value - specifies the value\n * @returns {string} - returns the string value\n * @hidden\n */\nexport function getFormattedFontSize(value) {\n if (isNOU(value)) {\n return '';\n }\n return value;\n}\n/**\n * @param {MouseEvent} e - specifies the mouse event\n * @param {HTMLElement} parentElement - specifies the parent element\n * @param {boolean} isIFrame - specifies the boolean value\n * @returns {number} - returns the number\n * @hidden\n */\nexport function pageYOffset(e, parentElement, isIFrame) {\n var y = 0;\n if (isIFrame) {\n y = window.pageYOffset + parentElement.getBoundingClientRect().top + e.clientY;\n }\n else {\n y = e.pageY;\n }\n return y;\n}\n/**\n * @param {string} item - specifies the string\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @returns {string} - returns the string\n * @hidden\n */\nexport function getTooltipText(item, serviceLocator) {\n var i10n = serviceLocator.getService('rteLocale');\n var itemLocale = toolsLocale[\"\" + item];\n var tooltipText = i10n.getConstant(itemLocale);\n return tooltipText;\n}\n/**\n * @param {ISetToolbarStatusArgs} e - specifies the e element\n * @param {boolean} isPopToolbar - specifies the boolean value\n * @param {IRichTextEditor} self - specifies the parent element\n * @returns {void}\n * @hidden\n */\nexport function setToolbarStatus(e, isPopToolbar, self) {\n updateDropDownFontFormatLocale(self);\n var dropDown = e.dropDownModule;\n var data = e.args;\n var keys = Object.keys(e.args);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n for (var j = 0; j < e.tbItems.length; j++) {\n var item = e.tbItems[j].subCommand;\n var itemStr = item && item.toLocaleLowerCase();\n if (item && (itemStr === key) || (item === 'UL' && key === 'unorderedlist') || (item === 'OL' && key === 'orderedlist') ||\n (itemStr === 'pre' && key === 'insertcode')) {\n if (typeof data[\"\" + key] === 'boolean') {\n if (data[\"\" + key] === true) {\n addClass([e.tbElements[j]], [classes.CLS_ACTIVE]);\n }\n else {\n removeClass([e.tbElements[j]], [classes.CLS_ACTIVE]);\n }\n }\n else if ((typeof data[\"\" + key] === 'string' || data[\"\" + key] === null) &&\n getIndex(key, e.parent.toolbarSettings.items) > -1) {\n var value = ((data[\"\" + key]) ? data[\"\" + key] : '');\n var result = '';\n switch (key) {\n case 'formats': {\n if (isNOU(dropDown.formatDropDown) || isPopToolbar ||\n (!isNOU(dropDown.formatDropDown) && dropDown.formatDropDown.isDestroyed)) {\n break;\n }\n var formatItems = e.parent.format.types;\n var formatContent = isNOU(e.parent.format.default) ? formatItems[0].text :\n e.parent.format.default;\n result = getDropDownValue(formatItems, value, 'subCommand', 'text');\n dropDown.formatDropDown.content = ('' +\n ''\n + (isNOU(result) ? formatContent : result) +\n '');\n dropDown.formatDropDown.dataBind();\n break;\n }\n case 'alignments': {\n if (isNOU(dropDown.alignDropDown) ||\n (!isNOU(dropDown.alignDropDown) && dropDown.alignDropDown.isDestroyed)) {\n break;\n }\n var alignItems = model.alignmentItems;\n result = getDropDownValue(alignItems, value, 'subCommand', 'iconCss');\n dropDown.alignDropDown.iconCss = isNOU(result) ? 'e-icons e-justify-left' : result;\n dropDown.alignDropDown.dataBind();\n break;\n }\n case 'fontname': {\n if (isNOU(dropDown.fontNameDropDown) || isPopToolbar ||\n (!isNOU(dropDown.fontNameDropDown) && dropDown.fontNameDropDown.isDestroyed)) {\n break;\n }\n var fontNameItems = e.parent.fontFamily.items;\n result = getDropDownValue(fontNameItems, value, 'value', 'text');\n var fontNameContent = isNOU(e.parent.fontFamily.default) ? fontNameItems[0].text :\n e.parent.fontFamily.default;\n var name_1 = (isNOU(result) ? fontNameContent : result);\n e.tbElements[j].title = name_1;\n dropDown.fontNameDropDown.content = ('' +\n ''\n + name_1 + '');\n dropDown.fontNameDropDown.dataBind();\n break;\n }\n case 'fontsize': {\n if (isNOU(dropDown.fontSizeDropDown) ||\n (!isNOU(dropDown.fontSizeDropDown) && dropDown.fontSizeDropDown.isDestroyed)) {\n break;\n }\n var fontSizeItems = e.parent.fontSize.items;\n var fontSizeContent = isNOU(e.parent.fontSize.default) ? fontSizeItems[1].text :\n e.parent.fontSize.default;\n result = getDropDownValue(fontSizeItems, (value === '' ? fontSizeContent.replace(/\\s/g, '') : value), 'value', 'text');\n dropDown.fontSizeDropDown.content = ('' +\n ''\n + getFormattedFontSize(result) + '');\n dropDown.fontSizeDropDown.dataBind();\n break;\n }\n }\n }\n }\n }\n }\n}\n/**\n * @param {string} items - specifies the string value\n * @returns {string[]} - returns the array value\n * @hidden\n */\nexport function getCollection(items) {\n if (typeof items === 'object') {\n return items;\n }\n else {\n return [items];\n }\n}\n/**\n * @param {string[]} items - specifies the array of string value\n * @param {IToolbarItemModel} toolbarItems - specifies the tool bar model\n * @returns {number} - returns the number\n * @hidden\n */\nexport function getTBarItemsIndex(items, toolbarItems) {\n var itemsIndex = [];\n for (var i = 0; i < items.length; i++) {\n for (var j = 0; j < toolbarItems.length; j++) {\n if (toolbarItems[j].type === 'Separator') {\n continue;\n }\n else {\n if (items[i] === 'OrderedList' && toolbarItems[j].subCommand === 'OL') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'UnorderedList' && toolbarItems[j].subCommand === 'UL') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'InsertCode' && toolbarItems[j].subCommand === 'Pre') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'FileManager' && toolbarItems[j].subCommand === 'File') {\n itemsIndex.push(j);\n break;\n }\n else if (typeof (items[i]) === 'object' && items[i].command === 'Custom') {\n itemsIndex.push(i);\n break;\n }\n else if (items[i] === toolbarItems[j].subCommand) {\n itemsIndex.push(j);\n break;\n }\n }\n }\n }\n return itemsIndex;\n}\n/**\n * @param {BaseToolbar} baseToolbar - specifies the base\n * @param {boolean} undoRedoStatus - specifies the boolean value\n * @returns {void}\n * @hidden\n */\nexport function updateUndoRedoStatus(baseToolbar, undoRedoStatus) {\n var i = 0;\n var trgItems = getTBarItemsIndex(getCollection(undoRedoItems), baseToolbar.toolbarObj.items);\n var tbItems = selectAll('.' + classes.CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n var keys = Object.keys(undoRedoStatus);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var target = tbItems[trgItems[i]];\n if (target) {\n baseToolbar.toolbarObj.enableItems(target, undoRedoStatus[\"\" + key]);\n }\n i++;\n }\n}\n/**\n * To dispatch the event manually\n *\n * @param {Element} element - specifies the element.\n * @param {string} type - specifies the string type.\n * @returns {void}\n * @hidden\n\n */\nexport function dispatchEvent(element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n}\n/**\n * To parse the HTML\n *\n * @param {string} value - specifies the string value\n * @returns {DocumentFragment} - returns the document\n * @hidden\n */\nexport function parseHtml(value) {\n var tempNode = createElement('template');\n tempNode.innerHTML = value;\n if (tempNode.content instanceof DocumentFragment) {\n return tempNode.content;\n }\n else {\n return document.createRange().createContextualFragment(value);\n }\n}\n/**\n * @param {Document} docElement - specifies the document element\n * @param {Element} node - specifies the node\n * @returns {Node[]} - returns the node array\n * @hidden\n */\nexport function getTextNodesUnder(docElement, node) {\n var nodes = [];\n for (node = node.firstChild; node; node = node.nextSibling) {\n if (node.nodeType === 3) {\n nodes.push(node);\n }\n else {\n nodes = nodes.concat(getTextNodesUnder(docElement, node));\n }\n }\n return nodes;\n}\n/**\n * @param {IToolsItemConfigs} obj - specifies the configuration\n * @returns {void}\n * @hidden\n */\nexport function toObjectLowerCase(obj) {\n var convertedValue = {};\n var keys = Object.keys(obj);\n for (var i = 0; i < Object.keys(obj).length; i++) {\n convertedValue[keys[i].toLocaleLowerCase()] = obj[keys[i]];\n }\n return convertedValue;\n}\n/**\n * @param {string} value - specifies the string value\n * @param {IRichTextEditor} rteObj - specifies the rte object\n * @returns {string} - returns the string\n * @hidden\n */\nexport function getEditValue(value, rteObj) {\n var val;\n if (value !== null && value !== '') {\n val = rteObj.enableHtmlEncode ? updateTextNode(decode(value), rteObj) : updateTextNode(value, rteObj);\n rteObj.setProperties({ value: val }, true);\n }\n else {\n if (rteObj.enterKey === 'DIV') {\n val = rteObj.enableHtmlEncode ? '<div><br/></div>' : '

';\n }\n else if (rteObj.enterKey === 'BR') {\n val = rteObj.enableHtmlEncode ? '<br/>' : '
';\n }\n else {\n val = rteObj.enableHtmlEncode ? '<p><br/></p>' : '


';\n }\n }\n return val;\n}\n/**\n * @param {string} value - specifies the value\n * @param {IRichTextEditor} rteObj - specifies the rich text editor instance.\n * @returns {string} - returns the string\n * @hidden\n */\nexport function updateTextNode(value, rteObj) {\n var tempNode = document.createElement('div');\n var resultElm = document.createElement('div');\n var childNodes = tempNode.childNodes;\n tempNode.innerHTML = value;\n tempNode.setAttribute('class', 'tempDiv');\n if (childNodes.length > 0) {\n var isPreviousInlineElem = void 0;\n var previousParent = void 0;\n var insertElem = void 0;\n while (tempNode.firstChild) {\n var emptyBlockElem = tempNode.querySelectorAll(CONSTANT.blockEmptyNodes);\n for (var i = 0; i < emptyBlockElem.length; i++) {\n emptyBlockElem[i].innerHTML = '
';\n }\n var emptyInlineElem = tempNode.querySelectorAll(CONSTANT.inlineEmptyNodes);\n for (var i = 0; i < emptyInlineElem.length; i++) {\n emptyInlineElem[i].innerHTML = '​';\n }\n if (rteObj.enterKey !== 'BR' && ((tempNode.firstChild.nodeName === '#text' &&\n (tempNode.firstChild.textContent.indexOf('\\n') < 0 || tempNode.firstChild.textContent.trim() !== '')) ||\n inlineNode.indexOf(tempNode.firstChild.nodeName.toLocaleLowerCase()) >= 0)) {\n if (!isPreviousInlineElem) {\n if (rteObj.enterKey === 'DIV') {\n insertElem = createElement('div');\n }\n else {\n insertElem = createElement('p');\n }\n resultElm.appendChild(insertElem);\n insertElem.appendChild(tempNode.firstChild);\n }\n else {\n previousParent.appendChild(tempNode.firstChild);\n }\n previousParent = insertElem;\n isPreviousInlineElem = true;\n }\n else if (tempNode.firstChild.nodeName === '#text' && (tempNode.firstChild.textContent === '\\n' ||\n (tempNode.firstChild.textContent.indexOf('\\n') >= 0 && tempNode.firstChild.textContent.trim() === ''))) {\n detach(tempNode.firstChild);\n }\n else {\n resultElm.appendChild(tempNode.firstChild);\n isPreviousInlineElem = false;\n }\n }\n var imageElm = resultElm.querySelectorAll('img');\n for (var i = 0; i < imageElm.length; i++) {\n if (!imageElm[i].classList.contains(classes.CLS_RTE_IMAGE)) {\n imageElm[i].classList.add(classes.CLS_RTE_IMAGE);\n }\n if (!(imageElm[i].classList.contains(classes.CLS_IMGINLINE) ||\n imageElm[i].classList.contains(classes.CLS_IMGBREAK))) {\n imageElm[i].classList.add(classes.CLS_IMGINLINE);\n }\n }\n }\n return resultElm.innerHTML;\n}\n/**\n * @param {IRichTextEditor} rteObj - specifies the rte object\n * @returns {string} - returns the value based on enter configuration.\n * @hidden\n */\nexport function getDefaultValue(rteObj) {\n var currentVal;\n if (rteObj.enterKey === 'DIV') {\n currentVal = rteObj.enableHtmlEncode ? '<div><br/></div>' : '

';\n }\n else if (rteObj.enterKey === 'BR') {\n currentVal = rteObj.enableHtmlEncode ? '<br/>' : '
';\n }\n else {\n currentVal = rteObj.enableHtmlEncode ? '<p><br/></p>' : '


';\n }\n return currentVal;\n}\n/**\n * @param {string} value - specifies the value\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nexport function isEditableValueEmpty(value) {\n return (value === '


' || value === '<p><br></p>'\n || value === '

' || value === '<div><br></div>'\n || value === '
' || value === '<br>'\n || value === '') ? true : false;\n}\n/**\n * @param {string} value - specifies the string value\n * @returns {string} - returns the string\n * @hidden\n */\nexport function decode(value) {\n return value.replace(/&/g, '&').replace(/&lt;/g, '<')\n .replace(/</g, '<').replace(/&gt;/g, '>')\n .replace(/>/g, '>').replace(/ /g, ' ')\n .replace(/&nbsp;/g, ' ').replace(/"/g, '');\n}\n/**\n * @param {string} value - specifies the string value\n * @param {IRichTextEditor} parent - specifies the rte\n * @returns {string} - returns the string value\n * @hidden\n */\nexport function sanitizeHelper(value, parent) {\n if (parent.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n if (item.selectors.tags[2] && item.selectors.tags[2].indexOf('iframe') > -1) {\n item.selectors.tags[2] = 'iframe:not(.e-rte-embed-url)';\n }\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n parent.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNOU(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n}\n/**\n * @param {string} dataUrl - specifies the string value\n * @returns {BaseToolbar} - returns the value\n * @hidden\n */\n//Converting the base64 url to blob\nexport function convertToBlob(dataUrl) {\n var arr = dataUrl.split(',');\n var mime = arr[0].match(/:(.*?);/)[1];\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: mime });\n}\n/**\n * @param {IRichTextEditor} self - specifies the rte\n * @param {string} localeItems - specifies the locale items\n * @param {IDropDownItemModel} item - specifies the dropdown item\n * @returns {string} - returns the value\n * @hidden\n */\nexport function getLocaleFontFormat(self, localeItems, item) {\n for (var i = 0; localeItems.length > i; i++) {\n if (localeItems[i].value === item.value || localeItems[i].value === item.subCommand) {\n return self.localeObj.getConstant(localeItems[i].locale);\n }\n }\n return item.text;\n}\n/**\n * @param {IRichTextEditor} self - specifies the rte\n * @returns {void}\n * @hidden\n */\nexport function updateDropDownFontFormatLocale(self) {\n model.fontFamily.forEach(function (item, i) {\n model.fontFamily[i].text = getLocaleFontFormat(self, fontNameLocale, model.fontFamily[i]);\n });\n model.formatItems.forEach(function (item, i) {\n model.formatItems[i].text = getLocaleFontFormat(self, formatsLocale, model.formatItems[i]);\n });\n model.numberFormatList.forEach(function (item, i) {\n model.numberFormatList[i].text = getLocaleFontFormat(self, numberFormatListLocale, model.numberFormatList[i]);\n });\n model.bulletFormatList.forEach(function (item, i) {\n model.bulletFormatList[i].text = getLocaleFontFormat(self, bulletFormatListLocale, model.bulletFormatList[i]);\n });\n}\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\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 if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n 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 /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '21';\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 ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjE=\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\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 // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n 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 if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","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","/**\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 // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== \"true\" && str !== \"false\") ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n // eslint-disable-next-line\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : DLG_UTIL_DEFAULT_TITLE;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * Dialog Renderer\n */\nvar DialogRenderer = /** @class */ (function () {\n function DialogRenderer(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n DialogRenderer.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n DialogRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.destroy, this.removeEventListener);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n /**\n * dialog render method\n *\n * @param {DialogModel} e - specifies the dialog model.\n * @returns {void}\n * @hidden\n\n */\n DialogRenderer.prototype.render = function (e) {\n var dlgObj;\n e.beforeOpen = this.beforeOpen.bind(this);\n e.open = this.open.bind(this);\n if (isNOU(e.close)) {\n e.close = this.close.bind(this);\n }\n e.beforeClose = this.beforeClose.bind(this);\n // eslint-disable-next-line\n dlgObj = new Dialog(e);\n dlgObj.isStringTemplate = true;\n return dlgObj;\n };\n DialogRenderer.prototype.beforeOpen = function (args) {\n this.parent.trigger(events.beforeDialogOpen, args, this.beforeOpenCallback.bind(this, args));\n };\n DialogRenderer.prototype.beforeOpenCallback = function (args) {\n if (args.cancel) {\n this.parent.notify(events.clearDialogObj, null);\n }\n };\n DialogRenderer.prototype.open = function (args) {\n this.parent.trigger(events.dialogOpen, args);\n };\n DialogRenderer.prototype.beforeClose = function (args) {\n this.parent.trigger(events.beforeDialogClose, args, function (closeArgs) {\n if (!closeArgs.cancel) {\n if (closeArgs.container.classList.contains('e-popup-close')) {\n closeArgs.cancel = true;\n }\n }\n });\n };\n /**\n * dialog close method\n *\n * @param {Object} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n DialogRenderer.prototype.close = function (args) {\n this.parent.trigger(events.dialogClose, args);\n };\n DialogRenderer.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n return DialogRenderer;\n}());\nexport { DialogRenderer };\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 __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};\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, Complex, Browser, addClass, select, detach } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, formatUnit, L10n, closest } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, Event, removeClass, print as printWindow, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, compile, append, extend, debounce } from '@syncfusion/ej2-base';\nimport { Touch as EJ2Touch } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { Render } from '../renderer/render';\nimport { ViewSource } from '../renderer/view-source';\nimport { executeGroup } from './interface';\nimport { ServiceLocator } from '../services/service-locator';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { RenderType, ToolbarType, DialogType } from './enum';\nimport { ExecCommandCallBack } from '../actions/execute-command-callback';\nimport { KeyboardEvents } from '../actions/keyboard';\nimport { ToolbarSettings, ImageSettings, AudioSettings, VideoSettings, QuickToolbarSettings, FontFamily, FontSize, Format, NumberFormatList, BulletFormatList, FormatPainterSettings } from '../models/toolbar-settings';\nimport { FileManagerSettings } from '../models/toolbar-settings';\nimport { TableSettings, PasteCleanupSettings } from '../models/toolbar-settings';\nimport { FontColor, BackgroundColor } from '../models/toolbar-settings';\nimport { IFrameSettings } from '../models/iframe-settings';\nimport { InlineMode } from '../models/inline-mode';\nimport { defaultLocale } from '../models/default-locale';\nimport { setAttributes } from '../actions/html-attributes';\nimport { FullScreen } from '../actions/full-screen';\nimport { EnterKeyAction } from '../actions/enter-key';\nimport * as CONSTANT from '../../common/constant';\nimport { dispatchEvent, getEditValue, isIDevice, decode, isEditableValueEmpty, getDefaultValue } from '../base/util';\nimport { DialogRenderer } from '../renderer/dialog-renderer';\n/**\n * Represents the Rich Text Editor component.\n * ```html\n * \n * \n * ```\n */\nvar RichTextEditor = /** @class */ (function (_super) {\n __extends(RichTextEditor, _super);\n function RichTextEditor(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - specifies the declaration.\n * @hidden\n\n */\n RichTextEditor.prototype.requiredModules = function () {\n var modules = [];\n if (this.toolbarSettings.enable) {\n modules.push({ member: 'toolbar', args: [this, this.serviceLocator] });\n modules.push({\n member: 'link',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'table',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'image',\n args: [this, this.serviceLocator]\n });\n if (this.quickToolbarSettings.enable) {\n modules.push({ member: 'quickToolbar', args: [this, this.serviceLocator] });\n }\n }\n if (this.showCharCount) {\n modules.push({ member: 'count', args: [this, this.serviceLocator] });\n }\n if (this.editorMode === 'Markdown') {\n modules.push({ member: 'markdownEditor', args: [this, this.serviceLocator] });\n }\n if (this.editorMode === 'HTML') {\n modules.push({ member: 'htmlEditor', args: [this, this.serviceLocator] });\n modules.push({ member: 'pasteCleanup', args: [this, this.serviceLocator] });\n modules.push({\n member: 'audio',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'video',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'formatPainter',\n args: [this]\n });\n }\n if (this.fileManagerSettings.enable) {\n modules.push({ member: 'fileManager', args: [this, this.serviceLocator] });\n }\n if (this.enableResize) {\n modules.push({ member: 'resize', args: [this] });\n }\n return modules;\n };\n RichTextEditor.prototype.updateEnable = function () {\n if (this.enabled) {\n removeClass([this.element], classes.CLS_DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n if (!isNOU(this.htmlAttributes.tabindex)) {\n this.inputElement.setAttribute('tabindex', this.htmlAttributes.tabindex);\n }\n else {\n this.inputElement.setAttribute('tabindex', '0');\n }\n }\n else {\n if (this.getToolbar()) {\n removeClass(this.getToolbar().querySelectorAll('.' + classes.CLS_ACTIVE), classes.CLS_ACTIVE);\n removeClass([this.getToolbar()], [classes.CLS_TB_FLOAT, classes.CLS_TB_ABS_FLOAT]);\n }\n addClass([this.element], classes.CLS_DISABLED);\n this.element.tabIndex = -1;\n this.element.setAttribute('aria-disabled', 'true');\n this.inputElement.setAttribute('tabindex', '-1');\n }\n };\n /**\n * setEnable method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.setEnable = function () {\n this.updateEnable();\n // eslint-disable-next-line\n (this.enabled) ? this.eventInitializer() : this.unWireEvents();\n };\n RichTextEditor.prototype.initializeValue = function () {\n this.isFocusOut = false;\n this.isRTE = false;\n this.isBlur = true;\n this.defaultResetValue = null;\n this.isResizeInitialized = false;\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @hidden\n * @private\n */\n RichTextEditor.prototype.preRender = function () {\n this.initializeValue();\n this.onBlurHandler = this.blurHandler.bind(this);\n this.onFocusHandler = this.focusHandler.bind(this);\n this.onResizeHandler = this.resizeHandler.bind(this);\n this.clickPoints = { clientX: 0, clientY: 0 };\n this.initialValue = this.value;\n this.serviceLocator = new ServiceLocator;\n this.initializeServices();\n this.setContainer();\n this.persistData();\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n attributes(this.element, { role: 'application', 'aria-label': 'Rich Text Editor' });\n };\n RichTextEditor.prototype.persistData = function () {\n if (this.enablePersistence && this.originalElement.tagName === 'TEXTAREA') {\n this.element.id = this.originalElement.id + '_wrapper';\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNOU(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n }\n };\n RichTextEditor.prototype.setContainer = function () {\n this.originalElement = this.element.cloneNode(true);\n if (this.value === null || this.valueTemplate !== null) {\n this.setValue();\n }\n if (this.element.hasAttribute('tabindex')) {\n this.htmlAttributes = { 'tabindex': this.element.getAttribute('tabindex') };\n this.element.removeAttribute('tabindex');\n }\n this.element.innerHTML = '';\n var invalidAttr = ['class', 'style', 'id', 'ejs-for'];\n var htmlAttr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(/^data-val/.test(this.element.attributes[a].name))) { // data-val for asp.net core data annotation validation.\n htmlAttr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(htmlAttr, this.htmlAttributes, htmlAttr);\n this.setProperties({ htmlAttributes: htmlAttr }, true);\n if (!isNOU(this.htmlAttributes.id)) {\n this.element.id = this.htmlAttributes.id;\n }\n if (this.element.tagName === 'TEXTAREA') {\n var rteOuterWrapper = this.createElement('div', {\n className: this.element.getAttribute('class')\n });\n this.element.innerHTML = '';\n this.element.parentElement.insertBefore(rteOuterWrapper, this.element);\n this.valueContainer = this.element;\n removeClass([this.valueContainer], this.element.getAttribute('class').split(' '));\n this.element = rteOuterWrapper;\n }\n else {\n this.valueContainer = this.createElement('textarea', {\n id: this.getID() + '-value',\n attrs: { 'aria-labelledby': this.getID() }\n });\n }\n this.valueContainer.name = this.getID();\n addClass([this.valueContainer], classes.CLS_RTE_HIDDEN);\n if (!isNOU(this.cssClass)) {\n var currentClassList = this.cssClass.split(' ');\n for (var i = 0; i < currentClassList.length; i++) {\n addClass([this.valueContainer], currentClassList[i]);\n }\n }\n this.element.appendChild(this.valueContainer);\n };\n /**\n * getPersistData method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Focuses the Rich Text Editor component\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.focusIn = function () {\n if (this.enabled) {\n this.inputElement.focus();\n this.focusHandler({});\n }\n };\n /**\n * Blurs the Rich Text Editor component\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.focusOut = function () {\n if (this.enabled) {\n this.inputElement.blur();\n this.blurHandler({});\n }\n };\n /**\n * Selects all the content in RichTextEditor\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.selectAll = function () {\n this.notify(events.selectAll, {});\n };\n /**\n * Selects a content range or an element\n *\n * @param {Range} range - Specify the range which you want to select within the content.\n * The method used to select a particular sentence or word or entire document.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.selectRange = function (range) {\n this.notify(events.selectRange, { range: range });\n };\n /**\n * Retrieves the HTML markup content from currently selected content of RichTextEditor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getSelection = function () {\n var str = '';\n this.notify(events.getSelectedHtml, {\n callBack: function (txt) {\n str = txt;\n }\n });\n return str;\n };\n /**\n * Executes the commands\n *\n * @returns {void}\n * @param {CommandName} commandName - Specifies the name of the command to be executed.\n * @param {string | HTMLElement | ILinkCommandsArgs | IImageCommandsArgs} value - Specifies the value that you want to execute.\n * @param {ExecuteCommandOption} option - specifies the command option\n * @public\n */\n RichTextEditor.prototype.executeCommand = function (commandName, value, option) {\n value = this.htmlPurifier(commandName, value);\n var internalValue;\n if (this.editorMode === 'HTML') {\n var range = this.getRange();\n if (this.iframeSettings.enable) {\n this.formatter.editorManager.nodeSelection.Clear(this.element.ownerDocument);\n }\n var toFocus = (this.iframeSettings.enable &&\n range.startContainer === this.inputElement) ? true : !this.inputElement.contains(range.startContainer);\n if (toFocus) {\n this.focusIn();\n }\n }\n var tool = executeGroup[\"\" + commandName];\n if (option && option.undo) {\n if (option.undo && this.formatter.getUndoRedoStack().length === 0) {\n this.formatter.saveData();\n }\n }\n if (this.maxLength !== -1 && !isNOU(tool.command)) {\n var currentInsertContentLength = 0;\n if (tool.command === 'Links') {\n currentInsertContentLength = value.text.length === 0 ?\n value.url.length : value.text.length;\n }\n if (tool.command === 'Images' || tool.command === 'Table' || tool.command === 'Files') {\n currentInsertContentLength = 1;\n }\n if (tool.command === 'InsertHTML') {\n if (!isNOU(value)) {\n var tempElem = this.createElement('div');\n tempElem.innerHTML = value;\n currentInsertContentLength = tempElem.textContent.length;\n }\n else if (!isNOU(tool.value) && (tool.value === '
' || tool.value === '
')) {\n currentInsertContentLength = 1;\n }\n }\n if (tool.command === 'InsertText') {\n currentInsertContentLength = value.length;\n }\n var currentLength = this.getText().trim().length;\n var selectionLength = this.getSelection().length;\n var totalLength = (currentLength - selectionLength) + currentInsertContentLength;\n if (!(this.maxLength === -1 || totalLength <= this.maxLength)) {\n return;\n }\n }\n internalValue = value;\n if (tool.command === 'FormatPainter') {\n if (!isNOU(value)) {\n this.formatPainterSettings = value;\n }\n internalValue = {\n formatPainterAction: tool.value\n };\n }\n this.formatter.editorManager.execCommand(tool.command, tool.subCommand ? tool.subCommand : (internalValue ? internalValue : tool.value), null, null, (internalValue ? internalValue : tool.value), (internalValue ? internalValue : tool.value));\n if (option && option.undo) {\n this.formatter.saveData();\n this.formatter.enableUndo(this);\n }\n this.setPlaceHolder();\n this.notify(events.contentChanged, {});\n };\n RichTextEditor.prototype.htmlPurifier = function (command, value) {\n if (this.editorMode === 'HTML') {\n switch (command) {\n case 'insertHTML':\n if (this.enableHtmlSanitizer) {\n if (typeof value === 'string') {\n value = this.htmlEditorModule.sanitizeHelper(value);\n }\n else {\n value = this.htmlEditorModule.sanitizeHelper(value.outerHTML);\n }\n }\n break;\n case 'insertTable':\n if (isNOU(value.width)) {\n value.width = { minWidth: this.tableSettings.minWidth,\n maxWidth: this.tableSettings.maxWidth, width: this.tableSettings.width };\n }\n break;\n case 'insertImage': {\n var temp = this.createElement('img', {\n attrs: {\n src: value.url\n }\n });\n var imageValue = temp.outerHTML;\n if (this.enableHtmlSanitizer) {\n imageValue = this.htmlEditorModule.sanitizeHelper(temp.outerHTML);\n }\n var url = (imageValue !== '' && (this.createElement('div', {\n innerHTML: imageValue\n }).firstElementChild).getAttribute('src')) || null;\n url = !isNOU(url) ? url : '';\n value.url = url;\n if (isNOU(value.width)) {\n value.width = { minWidth: this.insertImageSettings.minWidth,\n maxWidth: this.insertImageSettings.maxWidth, width: this.insertImageSettings.width };\n }\n if (isNOU(value.height)) {\n value.height = { minHeight: this.insertImageSettings.minHeight,\n maxHeight: this.insertImageSettings.maxHeight, height: this.insertImageSettings.height };\n }\n break;\n }\n case 'insertAudio': {\n var wrapTemp = this.createElement('audio', {\n attrs: {\n controls: ''\n }\n });\n var temp = this.createElement('source', {\n attrs: {\n src: value.url,\n type: value.url && value.url.split('.').length > 0\n ? 'audio/' + value.url.split('.')[value.url.split('.').length - 1] : ''\n }\n });\n wrapTemp.appendChild(temp);\n var audioValue = wrapTemp.outerHTML;\n if (this.enableHtmlSanitizer) {\n audioValue = this.htmlEditorModule.sanitizeHelper(wrapTemp.outerHTML);\n }\n var url = (audioValue !== '' && (this.createElement('div', {\n innerHTML: audioValue\n }).firstElementChild.firstElementChild).getAttribute('src')) || null;\n url = !isNOU(url) ? url : '';\n value.url = url;\n break;\n }\n case 'insertVideo': {\n var wrapTemp = this.createElement('video', {\n attrs: {\n controls: ''\n }\n });\n var temp = this.createElement('source', {\n attrs: {\n src: value.url,\n type: value.url && value.url.split('.').length > 0\n ? 'video/' + value.url.split('.')[value.url.split('.').length - 1] : ''\n }\n });\n wrapTemp.appendChild(temp);\n var audioValue = wrapTemp.outerHTML;\n if (this.enableHtmlSanitizer) {\n audioValue = this.htmlEditorModule.sanitizeHelper(temp.outerHTML);\n }\n var url = (audioValue !== '' && (this.createElement('div', {\n innerHTML: audioValue\n }).firstElementChild).getAttribute('src')) || null;\n url = !isNOU(url) ? url : '';\n value.url = url;\n if (isNOU(value.width)) {\n value.width = { minWidth: this.insertVideoSettings.minWidth,\n maxWidth: this.insertVideoSettings.maxWidth, width: this.insertVideoSettings.width };\n }\n if (isNOU(value.height)) {\n value.height = { minHeight: this.insertVideoSettings.minHeight,\n maxHeight: this.insertVideoSettings.maxHeight, height: this.insertVideoSettings.height };\n }\n break;\n }\n case 'createLink': {\n var tempNode = this.createElement('a', {\n attrs: {\n href: value.url\n }\n });\n var linkValue = tempNode.outerHTML;\n if (this.enableHtmlSanitizer) {\n linkValue = this.htmlEditorModule.sanitizeHelper(tempNode.outerHTML);\n }\n var href = (linkValue !== '' && (this.createElement('div', {\n innerHTML: linkValue\n }).firstElementChild).getAttribute('href')) || null;\n href = !isNOU(href) ? href : '';\n value.url = href;\n break;\n }\n }\n }\n return value;\n };\n RichTextEditor.prototype.encode = function (value) {\n var divNode = this.createElement('div');\n divNode.innerText = value.trim();\n // eslint-disable-next-line\n return divNode.innerHTML.replace(//gi, '\\n');\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n\n */\n RichTextEditor.prototype.render = function () {\n if (this.value && !this.valueTemplate) {\n this.setProperties({ value: this.serializeValue(this.value) }, true);\n }\n this.renderModule = new Render(this, this.serviceLocator);\n this.sourceCodeModule = new ViewSource(this, this.serviceLocator);\n this.notify(events.initialLoad, {});\n this.trigger(events.load);\n this.RTERender();\n // eslint-disable-next-line\n var execCommandCallBack = new ExecCommandCallBack(this);\n this.notify(events.initialEnd, {});\n if (this.enableXhtml) {\n this.setProperties({ value: this.getXhtml() }, true);\n }\n if (this.toolbarSettings.enable && this.toolbarSettings.type === 'Expand' && !isNOU(this.getToolbar()) &&\n (this.toolbarSettings.items.indexOf('Undo') > -1 && this.toolbarSettings.items.indexOf('Redo') > -1)) {\n this.disableToolbarItem(['Undo', 'Redo']);\n }\n this.setContentHeight();\n if (this.value !== null) {\n this.valueContainer.defaultValue = this.value;\n }\n // eslint-disable-next-line\n (!this.enabled) ? this.unWireEvents() : this.eventInitializer();\n this.notify(events.bindCssClass, { cssClass: this.cssClass });\n this.addAudioVideoWrapper();\n this.notify(events.tableclass, {});\n this.renderComplete();\n };\n /**\n * addAudioVideoWrapper method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.addAudioVideoWrapper = function () {\n var _this = this;\n var insertElem;\n var audioElm = this.element.querySelectorAll('audio');\n for (var i = 0; i < audioElm.length; i++) {\n if (!audioElm[i].classList.contains('e-rte-audio')) {\n audioElm[i].classList.add('e-rte-audio');\n audioElm[i].classList.add(classes.CLS_AUDIOINLINE);\n }\n // eslint-disable-next-line max-len\n if (!audioElm[i].parentElement.classList.contains(classes.CLS_CLICKELEM) && !audioElm[i].parentElement.classList.contains(classes.CLS_AUDIOWRAP)) {\n var audioWrapElem = this.createElement('span', { className: classes.CLS_AUDIOWRAP });\n audioWrapElem.setAttribute('style', 'width:300px; margin:0 auto;');\n audioWrapElem.contentEditable = 'false';\n var audioInnerWrapElem = this.createElement('span', { className: classes.CLS_CLICKELEM });\n audioWrapElem.appendChild(audioInnerWrapElem);\n audioElm[i].parentNode.insertBefore(audioWrapElem, audioElm[i].nextSibling);\n audioInnerWrapElem.appendChild(audioElm[i]);\n if (audioWrapElem.nextElementSibling === null) {\n insertElem = this.createElement('br');\n audioWrapElem.parentNode.insertBefore(insertElem, audioWrapElem.nextSibling);\n }\n }\n }\n var videoElm = this.element.querySelectorAll('video');\n for (var i = 0; i < videoElm.length; i++) {\n if (!videoElm[i].classList.contains('e-rte-video')) {\n videoElm[i].classList.add('e-rte-video');\n videoElm[i].classList.add(classes.CLS_VIDEOINLINE);\n }\n // eslint-disable-next-line max-len\n if (!videoElm[i].parentElement.classList.contains(classes.CLS_CLICKELEM) && !videoElm[i].parentElement.classList.contains(classes.CLS_VIDEOWRAP)) {\n var videoWrapElem = this.createElement('span', { className: classes.CLS_VIDEOWRAP });\n videoWrapElem.contentEditable = 'false';\n videoElm[i].parentNode.insertBefore(videoWrapElem, videoElm[i].nextSibling);\n videoWrapElem.appendChild(videoElm[i]);\n if (videoWrapElem.nextElementSibling === null) {\n insertElem = this.createElement('br');\n videoWrapElem.parentNode.insertBefore(insertElem, videoWrapElem.nextSibling);\n }\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n // eslint-disable-next-line\n videoElm[i].addEventListener('play', function (args) {\n _this.notify(events.mouseDown, { args: args });\n _this.notify('editAreaClick', { args: args });\n });\n // eslint-disable-next-line\n videoElm[i].addEventListener('pause', function (args) {\n _this.notify(events.mouseDown, { args: args });\n _this.notify('editAreaClick', { args: args });\n });\n }\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n\n * @hidden\n */\n RichTextEditor.prototype.eventInitializer = function () {\n this.wireEvents();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RichTextEditor.prototype.cleanList = function (e) {\n var range = this.getRange();\n var currentStartContainer = range.startContainer;\n var currentEndContainer = range.endContainer;\n var currentStartOffset = range.startOffset;\n var isSameContainer = currentStartContainer === currentEndContainer ? true : false;\n var currentEndOffset = currentEndContainer.textContent.length;\n var endNode = range.endContainer.nodeName === '#text' ? range.endContainer.parentElement :\n range.endContainer;\n var closestLI = closest(endNode, 'LI');\n var isDetached = false;\n if (!isNOU(closestLI) && endNode.textContent.length === range.endOffset &&\n !range.collapsed && isNOU(endNode.nextElementSibling)) {\n for (var i = 0; i < closestLI.childNodes.length; i++) {\n if (closestLI.childNodes[i].nodeName === '#text' && closestLI.childNodes[i].textContent.trim().length === 0) {\n detach(closestLI.childNodes[i]);\n isDetached = true;\n i--;\n }\n }\n var currentLastElem = closestLI;\n while (currentLastElem.lastChild !== null && currentLastElem.nodeName !== '#text') {\n currentLastElem = currentLastElem.lastChild;\n }\n if (isDetached) {\n var currentLast = currentLastElem.nodeName === 'BR' && !isNOU(currentLastElem.previousSibling) ?\n currentLastElem.previousSibling : currentLastElem;\n this.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), isSameContainer ? currentLast : currentStartContainer, currentLast, currentStartOffset, (currentLast.nodeName === 'BR' ? 0 : currentLast.textContent.length));\n }\n }\n };\n /**\n * For internal use only - keydown the event handler;\n *\n * @param {KeyboardEvent} e - specifies the event.\n * @returns {void}\n * @private\n\n * @hidden\n */\n RichTextEditor.prototype.keyDown = function (e) {\n this.notify(events.keyDown, { member: 'keydown', args: e });\n this.restrict(e);\n if (this.editorMode === 'HTML') {\n this.cleanList(e);\n }\n if (this.editorMode === 'HTML' && ((e.which === 8 && e.code === 'Backspace') || (e.which === 46 && e.code === 'Delete'))) {\n var range = this.getRange();\n var startNode = range.startContainer.nodeName === '#text' ? range.startContainer.parentElement :\n range.startContainer;\n if (closest(startNode, 'pre') &&\n (e.which === 8 && range.startContainer.textContent.charCodeAt(range.startOffset - 1) === 8203) ||\n (e.which === 46 && range.startContainer.textContent.charCodeAt(range.startOffset) === 8203)) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var pointer = e.which === 8 ? range.startOffset - 1 : range.startOffset;\n range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), range.startContainer, pointer);\n }\n else if ((e.code === 'Backspace' && e.which === 8) &&\n range.startContainer.textContent.charCodeAt(0) === 8203 && range.collapsed) {\n var parentEle = range.startContainer.parentElement;\n var index = void 0;\n var i = void 0;\n for (i = 0; i < parentEle.childNodes.length; i++) {\n if (parentEle.childNodes[i] === range.startContainer) {\n index = i;\n }\n }\n var bool = true;\n var removeNodeArray = [];\n for (i = index; i >= 0; i--) {\n // eslint-disable-next-line max-len\n if (parentEle.childNodes[i].nodeType === 3 && parentEle.childNodes[i].textContent.charCodeAt(0) === 8203 && bool) {\n removeNodeArray.push(i);\n }\n else {\n bool = false;\n }\n }\n if (removeNodeArray.length > 0) {\n for (i = removeNodeArray.length - 1; i > 0; i--) {\n parentEle.childNodes[removeNodeArray[i]].textContent = '';\n }\n }\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), range.startContainer, range.startOffset);\n }\n }\n if (this.formatter.getUndoRedoStack().length === 0) {\n this.formatter.saveData();\n }\n if (e.action !== 'insert-link' &&\n e.action !== 'format-copy' && e.action !== 'format-paste' &&\n (e.action && e.action !== 'paste' && e.action !== 'space'\n || e.which === 9 || (e.code === 'Backspace' && e.which === 8))) {\n var FormatPainterEscapeAction = false;\n if (!isNOU(this.formatPainterModule)) {\n FormatPainterEscapeAction = this.formatPainterModule.previousAction === 'escape';\n }\n if (!FormatPainterEscapeAction) {\n this.formatter.process(this, null, e);\n }\n switch (e.action) {\n case 'toolbar-focus':\n if (this.toolbarSettings.enable) {\n // eslint-disable-next-line\n var selector = '.e-toolbar-item[title] [tabindex]';\n this.toolbarModule.baseToolbar.toolbarObj.element.querySelector(selector).focus();\n }\n break;\n case 'escape':\n this.contentModule.getEditPanel().focus();\n break;\n }\n }\n if (!isNOU(this.placeholder)) {\n if ((!isNOU(this.placeHolderWrapper)) && (this.inputElement.textContent.length !== 1)) {\n this.placeHolderWrapper.style.display = 'none';\n }\n else if (this.iframeSettings.enable && this.inputElement.classList.contains(\"e-rte-placeholder\")) {\n removeClass([this.inputElement], \"e-rte-placeholder\");\n }\n else {\n this.setPlaceHolder();\n }\n }\n this.autoResize();\n };\n RichTextEditor.prototype.keyUp = function (e) {\n if (this.editorMode === 'HTML') {\n var range = this.getRange();\n if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer.nodeName === '#text' &&\n range.startContainer.parentElement === this.inputElement && this.enterKey !== 'BR') {\n var range_1 = this.getRange();\n var tempElem = this.createElement(this.enterKey);\n range_1.startContainer.parentElement.insertBefore(tempElem, range_1.startContainer);\n tempElem.appendChild(range_1.startContainer);\n this.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), tempElem.childNodes[0], tempElem.childNodes[0], tempElem.childNodes[0].textContent.length, tempElem.childNodes[0].textContent.length);\n }\n }\n this.notify(events.keyUp, { member: 'keyup', args: e });\n if (e.keyCode === 39 || e.keyCode === 37) {\n this.notify(events.tableModulekeyUp, { member: 'tableModulekeyUp', args: e });\n }\n if (e.code === 'KeyX' && e.which === 88 && e.keyCode === 88 && e.ctrlKey && (this.inputElement.innerHTML === '' ||\n this.inputElement.innerHTML === '
')) {\n this.inputElement.innerHTML = getEditValue(getDefaultValue(this), this);\n }\n var allowedKeys = e.which === 32 || e.which === 13 || e.which === 8 || e.which === 46;\n if (((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys) || (this.editorMode === 'Markdown'\n && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys)) && !this.inlineMode.enable) {\n this.formatter.onKeyHandler(this, e);\n }\n if (this.inputElement && this.inputElement.textContent.length !== 0\n || this.element.querySelectorAll('.e-toolbar-item.e-active').length > 0) {\n this.notify(events.toolbarRefresh, { args: e });\n }\n if (!isNOU(this.placeholder)) {\n if (!(e.key === 'Enter' && e.keyCode === 13) && (this.inputElement.innerHTML === '


' || this.inputElement.innerHTML === '

' ||\n this.inputElement.innerHTML === '
')) {\n this.setPlaceHolder();\n }\n }\n };\n /**\n * @param {string} value - specifies the value.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.serializeValue = function (value) {\n if (this.editorMode === 'HTML' && !isNOU(value)) {\n if (this.enableHtmlEncode) {\n value = this.htmlEditorModule.sanitizeHelper(decode(value));\n value = this.encode(value);\n }\n else {\n value = this.htmlEditorModule.sanitizeHelper(value);\n value = this.enableXhtml ? this.htmlEditorModule.xhtmlValidation.selfEncloseValidation(value) : value;\n }\n }\n return value;\n };\n /**\n * This method will clean up the HTML against cross-site scripting attack and return the HTML as string.\n * It's only applicable to editorMode as `HTML`.\n *\n * @param {string} value - Specifies the value that you want to sanitize.\n * @returns {string} - specifies the the string value\n */\n RichTextEditor.prototype.sanitizeHtml = function (value) {\n return this.serializeValue(value);\n };\n /**\n * updateValue method\n *\n * @param {string} value - specifies the string value.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.updateValue = function (value) {\n if (isNOU(value)) {\n var inputVal = this.inputElement.innerHTML;\n this.setProperties({ value: isEditableValueEmpty(inputVal) ? null : inputVal });\n }\n else {\n this.setProperties({ value: value });\n }\n };\n RichTextEditor.prototype.triggerEditArea = function (e) {\n if (!isIDevice()) {\n this.notify(events.editAreaClick, { member: 'editAreaClick', args: e });\n }\n else {\n var touch = (e.touches ? e.changedTouches[0] : e);\n if (this.clickPoints.clientX === touch.clientX && this.clickPoints.clientY === touch.clientY) {\n this.notify(events.editAreaClick, { member: 'editAreaClick', args: e });\n }\n }\n };\n RichTextEditor.prototype.notifyMouseUp = function (e) {\n var touch = (e.touches ? e.changedTouches[0] : e);\n this.notify(events.mouseUp, { member: 'mouseUp', args: e,\n touchData: { prevClientX: this.clickPoints.clientX, prevClientY: this.clickPoints.clientY,\n clientX: touch.clientX, clientY: touch.clientY }\n });\n if (this.inputElement && ((this.editorMode === 'HTML' && this.inputElement.textContent.length !== 0) ||\n (this.editorMode === 'Markdown' && this.inputElement.value.length !== 0)) || (e.target && (e.target.nodeName === 'VIDEO'\n || e.target.querySelectorAll('.' + classes.CLS_VIDEOWRAP).length > 0) || (e.target && e.target.nodeName !== 'BR' &&\n (e.target.classList.contains(classes.CLS_AUDIOWRAP) ||\n e.target.classList.contains(classes.CLS_CLICKELEM) ||\n e.target.classList.contains(classes.CLS_VID_CLICK_ELEM))))) {\n this.notify(events.toolbarRefresh, { args: e });\n }\n this.triggerEditArea(e);\n };\n RichTextEditor.prototype.mouseUp = function (e) {\n if (this.quickToolbarSettings.showOnRightClick && Browser.isDevice) {\n var target = e.target;\n var closestTable = closest(target, 'table');\n if (target && target.nodeName === 'A' || target.nodeName === 'IMG' || (target.nodeName === 'TD' || target.nodeName === 'TH' ||\n target.nodeName === 'TABLE' || (closestTable && this.contentModule.getEditPanel().contains(closestTable)))) {\n return;\n }\n }\n this.notifyMouseUp(e);\n if (e.detail === 3) {\n var range = this.getRange();\n var selection = this.formatter.editorManager.domNode.getSelection();\n if (/\\s+$/.test(selection.toString())) {\n if (!isNOU(range.startContainer.parentElement) && (!isNOU(range.startContainer.parentElement.nextSibling) &&\n (range.startContainer.parentElement.nextSibling.nodeType !== 3 ||\n /\\s+$/.test(range.startContainer.parentElement.nextSibling.textContent)) || range.startOffset === range.endOffset)\n || range.startContainer.parentElement.tagName.toLocaleLowerCase() === 'li') {\n range.setStart(range.startContainer, range.startOffset);\n range.setEnd(range.startContainer, range.startContainer.textContent.length);\n }\n }\n }\n };\n /**\n * @param {Function} module - specifies the module function.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.onCopy = function () {\n this.contentModule.getDocument().execCommand('copy', false, null);\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.onCut = function () {\n this.contentModule.getDocument().execCommand('cut', false, null);\n };\n /**\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.onPaste = function (e) {\n var _this = this;\n var evenArgs = {\n originalEvent: e,\n cancel: false,\n requestType: 'Paste'\n };\n this.trigger(events.actionBegin, evenArgs, function (pasteArgs) {\n var currentLength = _this.inputElement.textContent.length;\n var selectionLength = _this.getSelection().length;\n var pastedContentLength = (isNOU(e) || isNOU(e.clipboardData))\n ? 0 : e.clipboardData.getData('text/plain').length;\n var totalLength = (currentLength - selectionLength) + pastedContentLength;\n if (_this.editorMode === 'Markdown') {\n var args_1 = { requestType: 'Paste', editorMode: _this.editorMode, event: e };\n setTimeout(function () {\n _this.formatter.onSuccess(_this, args_1);\n }, 0);\n if (!(_this.maxLength === -1 || totalLength <= _this.maxLength)) {\n e.preventDefault();\n }\n return;\n }\n if (!pasteArgs.cancel && _this.inputElement.contentEditable === 'true' &&\n (_this.maxLength === -1 || totalLength <= _this.maxLength)) {\n if (!isNOU(_this.pasteCleanupModule)) {\n _this.notify(events.pasteClean, { args: e });\n }\n else {\n var args_2 = { requestType: 'Paste', editorMode: _this.editorMode, event: e };\n var value = null;\n var htmlValue = false;\n if (e && !isNOU(e.clipboardData)) {\n value = e.clipboardData.getData('text/plain');\n htmlValue = e.clipboardData.getData('text/html').indexOf('MsoNormal') > 0;\n }\n var file = e && e.clipboardData && e.clipboardData.items.length > 0 ?\n e.clipboardData.items[0].getAsFile() : null;\n if (value !== null) {\n _this.notify(events.paste, {\n file: file,\n args: e,\n text: value,\n isWordPaste: htmlValue\n });\n }\n setTimeout(function () {\n _this.formatter.onSuccess(_this, args_2);\n }, 0);\n }\n }\n else {\n e.preventDefault();\n }\n });\n };\n /**\n * @param {string} action - specifies the string value.\n * @param {MouseEvent} event - specifies the event.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.clipboardAction = function (action, event) {\n switch (action.toLowerCase()) {\n case 'cut':\n this.onCut();\n this.formatter.onSuccess(this, {\n requestType: 'Cut',\n editorMode: this.editorMode,\n event: event\n });\n break;\n case 'copy':\n this.onCopy();\n this.formatter.onSuccess(this, {\n requestType: 'Copy',\n editorMode: this.editorMode,\n event: event\n });\n break;\n case 'paste':\n this.onPaste(event);\n break;\n }\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @returns {void}\n */\n RichTextEditor.prototype.destroy = function () {\n if (this.isDestroyed || !this.isRendered) {\n return;\n }\n if (!isNOU(this.timeInterval)) {\n clearInterval(this.timeInterval);\n this.timeInterval = null;\n }\n if (this.element.offsetParent === null) {\n if (!isNOU(this.toolbarModule)) {\n this.toolbarModule.destroy();\n }\n this.notify(events.moduleDestroy, {});\n return;\n }\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n this.unWireEvents();\n if (this.originalElement.tagName === 'TEXTAREA') {\n this.element.parentElement.insertBefore(this.valueContainer, this.element);\n this.valueContainer.id = this.getID();\n this.valueContainer.removeAttribute('name');\n detach(this.element);\n if (this.originalElement.innerHTML.trim() !== '') {\n this.valueContainer.value = this.originalElement.innerHTML.trim();\n this.setProperties({ value: (!isNOU(this.initialValue) ? this.initialValue : null) }, true);\n }\n else {\n this.valueContainer.value = this.valueContainer.defaultValue;\n }\n this.element = this.valueContainer;\n for (var i = 0; i < this.originalElement.classList.length; i++) {\n addClass([this.element], this.originalElement.classList[i]);\n }\n if (!isNOU(this.cssClass)) {\n var currentClassList = this.cssClass.split(' ');\n for (var i = 0; i < currentClassList.length; i++) {\n addClass([this.element], currentClassList[i]);\n }\n }\n removeClass([this.element], classes.CLS_RTE_HIDDEN);\n }\n else {\n if (this.originalElement.innerHTML.trim() !== '') {\n this.element.innerHTML = this.originalElement.innerHTML.trim();\n this.setProperties({ value: (!isNOU(this.initialValue) ? this.initialValue : null) }, true);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n if (this.placeholder && this.placeHolderWrapper) {\n this.placeHolderWrapper = null;\n }\n if (!isNOU(this.cssClass)) {\n var allClassName = this.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n removeClass([this.element], allClassName[i]);\n }\n }\n }\n this.removeHtmlAttributes();\n this.removeAttributes();\n _super.prototype.destroy.call(this);\n this.isRendered = false;\n if (this.enablePersistence) {\n window.localStorage.removeItem(this.getModuleName() + this.element.id);\n }\n };\n RichTextEditor.prototype.removeHtmlAttributes = function () {\n if (this.htmlAttributes) {\n var keys = Object.keys(this.htmlAttributes);\n for (var i = 0; i < keys.length && this.element.hasAttribute(keys[i]); i++) {\n this.element.removeAttribute(keys[i]);\n }\n }\n };\n RichTextEditor.prototype.removeAttributes = function () {\n if (!this.enabled) {\n removeClass([this.element], classes.CLS_DISABLED);\n }\n if (this.enableRtl) {\n removeClass([this.element], classes.CLS_RTL);\n }\n if (this.readonly) {\n removeClass([this.element], classes.CLS_RTE_READONLY);\n }\n if (this.element.style.width !== '' && this.originalElement.style.width === '') {\n this.element.style.removeProperty('width');\n }\n if (this.element.style.height !== '' && this.originalElement.style.height === '') {\n this.element.style.removeProperty('height');\n }\n this.element.removeAttribute('aria-disabled');\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n };\n RichTextEditor.prototype.destroyDependentModules = function () {\n /* destroy dependent modules */\n this.renderModule.destroy();\n this.formatter.editorManager.undoRedoManager.destroy();\n this.sourceCodeModule.destroy();\n };\n /**\n * Returns the HTML or Text inside the RichTextEditor.\n *\n * @returns {Element} - specifies the element.\n */\n RichTextEditor.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string value.\n */\n RichTextEditor.prototype.getText = function () {\n return this.contentModule.getText();\n };\n /**\n * Returns the html value of the selected content as string.\n *\n * @returns {string} - specifies the string value.\n */\n RichTextEditor.prototype.getSelectedHtml = function () {\n var range;\n var wrapperElm = this.createElement('div');\n var selection = this.contentModule.getDocument().getSelection();\n if (selection.rangeCount > 0) {\n range = selection.getRangeAt(0);\n var selectedHtml = range.cloneContents();\n wrapperElm.appendChild(selectedHtml);\n }\n return wrapperElm.innerHTML;\n };\n /**\n * It shows the inline quick toolbar\n *\n * @returns {void}\n */\n RichTextEditor.prototype.showInlineToolbar = function () {\n if (this.inlineMode.enable) {\n var currentRange = this.getRange();\n var targetElm = currentRange.endContainer.nodeName === '#text' ?\n currentRange.endContainer.parentElement : currentRange.endContainer;\n var x = currentRange.getClientRects()[0].left;\n var y = currentRange.getClientRects()[0].top;\n this.quickToolbarModule.showInlineQTBar(x, y, targetElm);\n }\n };\n /**\n * It hides the inline quick toolbar\n *\n * @returns {void}\n */\n RichTextEditor.prototype.hideInlineToolbar = function () {\n this.quickToolbarModule.hideInlineQTBar();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @private\n\n */\n RichTextEditor.prototype.getModuleName = function () {\n return 'richtexteditor';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} newProp - specifies the the property.\n * @param {RichTextEditorModel} oldProp - specifies the old property.\n * @returns {void}\n * @hidden\n\n */\n /* eslint-disable */\n RichTextEditor.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 'enterKey':\n case 'value': {\n var nVal = void 0;\n if (prop === 'enterKey') {\n if (this.value === null || this.value === '

' || this.value === '


' ||\n this.value === '
') {\n nVal = null;\n }\n else {\n nVal = this.value;\n }\n }\n else {\n nVal = newProp[prop];\n }\n var val = this.editorMode === 'HTML' ? getEditValue(nVal, this) : nVal;\n if ((!isNOU(nVal) && nVal !== '') || prop === 'enterKey') {\n this.value = this.serializeValue(((this.enableHtmlEncode) ? this.encode(decode(val)) : val));\n }\n this.updatePanelValue();\n if (this.inputElement) {\n this.notify(events.tableclass, {});\n }\n this.setPlaceHolder();\n this.notify(events.xhtmlValidation, { module: 'XhtmlValidation', newProp: newProp, oldProp: oldProp });\n if (this.enableXhtml) {\n this.setProperties({ value: this.getXhtml() }, true);\n }\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n this.addAudioVideoWrapper();\n break;\n }\n case 'valueTemplate':\n this.setValue(true);\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n case 'width':\n this.setWidth(newProp[prop]);\n if (this.toolbarSettings.enable && !this.inlineMode.enable) {\n this.toolbarModule.refreshToolbarOverflow();\n this.resizeHandler();\n }\n break;\n case 'height':\n this.setHeight(newProp[prop]);\n this.setContentHeight();\n this.autoResize();\n break;\n case 'readonly':\n this.setReadOnly(false);\n break;\n case 'cssClass':\n this.element.classList.remove(oldProp[prop]);\n this.setCssClass(newProp[prop]);\n this.notify(events.bindCssClass, { cssClass: newProp[prop], oldCssClass: oldProp[prop] });\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'placeholder':\n this.placeholder = newProp[prop];\n this.setPlaceHolder();\n break;\n case 'htmlAttributes':\n setAttributes(this.htmlAttributes, this, false, false);\n break;\n case 'iframeSettings': {\n var frameSetting = oldProp[prop];\n if (frameSetting.resources) {\n var iframe = this.contentModule.getDocument();\n var header = iframe.querySelector('head');\n var files = void 0;\n if (frameSetting.resources.scripts) {\n files = header.querySelectorAll('.' + classes.CLS_SCRIPT_SHEET);\n this.removeSheets(files);\n }\n if (frameSetting.resources.styles) {\n files = header.querySelectorAll('.' + classes.CLS_STYLE_SHEET);\n this.removeSheets(files);\n }\n }\n this.setIframeSettings();\n break;\n }\n case 'locale':\n _super.prototype.refresh.call(this);\n break;\n case 'inlineMode':\n this.notify(events.modelChanged, { module: 'quickToolbar', newProp: newProp, oldProp: oldProp });\n this.setContentHeight();\n break;\n case 'toolbarSettings':\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n this.setContentHeight();\n break;\n case 'maxLength':\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n case 'showCharCount':\n if (newProp[prop] && this.countModule) {\n this.countModule.renderCount();\n }\n else if (newProp[prop] === false && this.countModule) {\n this.countModule.destroy();\n }\n break;\n case 'enableHtmlEncode':\n this.updateValueData();\n this.updatePanelValue();\n this.setPlaceHolder();\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n case 'undoRedoSteps':\n case 'undoRedoTimer':\n this.formatter.editorManager.observer.notify(CONSTANT.MODEL_CHANGED, { newProp: newProp, oldProp: oldProp });\n break;\n case 'enableXhtml':\n this.notify(events.xhtmlValidation, { module: 'XhtmlValidation', newProp: newProp, oldProp: oldProp });\n break;\n case 'quickToolbarSettings':\n newProp.quickToolbarSettings.showOnRightClick ? this.wireContextEvent() : this.unWireContextEvent();\n this.notify(events.modelChanged, { newProp: newProp, oldProp: oldProp });\n break;\n default:\n this.notify(events.modelChanged, { newProp: newProp, oldProp: oldProp });\n break;\n }\n }\n };\n /* eslint-enable */\n /**\n * @hidden\n * @returns {void}\n\n */\n RichTextEditor.prototype.updateValueData = function () {\n if (this.enableHtmlEncode) {\n this.setProperties({ value: this.encode(decode(this.inputElement.innerHTML)) }, true);\n }\n else {\n this.setProperties({\n value: /<[a-z][\\s\\S]*>/i.test(this.inputElement.innerHTML) ? this.inputElement.innerHTML :\n decode(this.inputElement.innerHTML)\n });\n }\n };\n RichTextEditor.prototype.removeSheets = function (srcList) {\n var i;\n for (i = 0; i < srcList.length; i++) {\n detach(srcList[i]);\n }\n };\n RichTextEditor.prototype.updatePanelValue = function () {\n var value = this.value;\n value = (this.enableHtmlEncode && this.value) ? decode(value) : value;\n var getTextArea = this.element.querySelector('.e-rte-srctextarea');\n if (value) {\n if (getTextArea && getTextArea.style.display === 'block') {\n getTextArea.value = this.value;\n }\n if (this.valueContainer) {\n this.valueContainer.value = (this.enableHtmlEncode) ? this.value : value;\n }\n if (this.editorMode === 'HTML' && this.inputElement && this.inputElement.innerHTML.replace('&', '&').trim() !== value.trim()) {\n this.inputElement.innerHTML = value;\n }\n else if (this.editorMode === 'Markdown' && this.inputElement\n && this.inputElement.value.trim() !== value.trim()) {\n this.inputElement.value = value;\n }\n }\n else {\n if (getTextArea && getTextArea.style.display === 'block') {\n getTextArea.value = '';\n }\n if (this.editorMode === 'HTML') {\n if (this.enterKey === 'DIV') {\n this.inputElement.innerHTML = '

';\n }\n else if (this.enterKey === 'BR') {\n this.inputElement.innerHTML = '
';\n }\n else {\n this.inputElement.innerHTML = '


';\n if (value === '' && this.formatter && this.inputElement) {\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), this.inputElement.firstElementChild, this.inputElement.firstElementChild.childElementCount);\n }\n }\n }\n else {\n this.inputElement.value = '';\n }\n if (this.valueContainer) {\n this.valueContainer.value = '';\n }\n }\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n };\n RichTextEditor.prototype.setHeight = function (height) {\n if (height !== 'auto') {\n this.element.style.height = formatUnit(height);\n }\n else {\n this.element.style.height = 'auto';\n }\n if (this.toolbarSettings.type === 'Expand' && (typeof (this.height) === 'string' &&\n this.height.indexOf('px') > -1 || typeof (this.height) === 'number')) {\n this.element.classList.add(classes.CLS_RTE_FIXED_TB_EXPAND);\n }\n else {\n this.element.classList.remove(classes.CLS_RTE_FIXED_TB_EXPAND);\n }\n };\n /**\n * setPlaceHolder method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.setPlaceHolder = function () {\n if (this.inputElement && this.placeholder && this.iframeSettings.enable !== true) {\n if (this.editorMode !== 'Markdown') {\n if (!this.placeHolderWrapper) {\n this.placeHolderWrapper = this.createElement('span', { className: 'rte-placeholder e-rte-placeholder' + ' ' + this.cssClass });\n if (this.inputElement) {\n this.inputElement.parentElement.insertBefore(this.placeHolderWrapper, this.inputElement);\n }\n attributes(this.placeHolderWrapper, {\n 'style': 'font-size: 14px; margin-left: 0px; margin-right: 0px;'\n });\n }\n this.placeHolderWrapper.innerHTML = this.placeholder;\n if (this.inputElement.textContent.length === 0 && this.inputElement.childNodes.length < 2 && !isNOU(this.inputElement.firstChild) && (this.inputElement.firstChild.nodeName === 'BR' ||\n ((this.inputElement.firstChild.nodeName === 'P' || this.inputElement.firstChild.nodeName === 'DIV') && !isNOU(this.inputElement.firstChild.firstChild) &&\n this.inputElement.firstChild.firstChild.nodeName === 'BR'))) {\n this.placeHolderWrapper.style.display = 'block';\n }\n else {\n this.placeHolderWrapper.style.display = 'none';\n }\n }\n else {\n this.inputElement.setAttribute('placeholder', this.placeholder);\n }\n }\n if (this.placeholder && this.iframeSettings.enable) {\n if (this.inputElement.textContent.length === 0 && this.inputElement.childNodes.length < 2 && !isNOU(this.inputElement.firstChild) && (this.inputElement.firstChild.nodeName === 'BR' ||\n ((this.inputElement.firstChild.nodeName === 'P' || this.inputElement.firstChild.nodeName === 'DIV') && !isNOU(this.inputElement.firstChild.firstChild) &&\n this.inputElement.firstChild.firstChild.nodeName === 'BR'))) {\n addClass([this.inputElement], \"e-rte-placeholder\");\n this.inputElement.setAttribute('placeholder', this.placeholder);\n }\n else {\n removeClass([this.inputElement], \"e-rte-placeholder\");\n }\n }\n };\n RichTextEditor.prototype.setWidth = function (width) {\n if (width !== 'auto') {\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n }\n else {\n this.element.style.width = 'auto';\n }\n };\n RichTextEditor.prototype.setCssClass = function (cssClass) {\n if (!isNOU(cssClass)) {\n var allClassName = cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n this.element.classList.add(allClassName[i]);\n }\n }\n }\n };\n RichTextEditor.prototype.updateRTL = function () {\n this.notify(events.rtlMode, { enableRtl: this.enableRtl });\n if (this.enableRtl) {\n this.element.classList.add(classes.CLS_RTL);\n this.inputElement.classList.add(classes.CLS_RTL);\n }\n else {\n this.element.classList.remove(classes.CLS_RTL);\n this.inputElement.classList.remove(classes.CLS_RTL);\n }\n };\n RichTextEditor.prototype.updateReadOnly = function () {\n this.notify(events.readOnlyMode, { editPanel: this.inputElement, mode: this.readonly });\n };\n /**\n * setReadOnly method\n *\n * @param {boolean} initial - specifies the boolean value\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.setReadOnly = function (initial) {\n this.updateReadOnly();\n if (!initial) {\n if (this.readonly && this.enabled) {\n this.unbindEvents();\n }\n else if (this.enabled) {\n this.bindEvents();\n }\n }\n };\n /**\n * By default, prints all the pages of the RichTextEditor.\n *\n * @returns {void}\n */\n RichTextEditor.prototype.print = function () {\n var _this = this;\n var printWind;\n var printArgs = {\n element: this.inputElement,\n requestType: 'print',\n cancel: false\n };\n this.trigger(events.actionBegin, printArgs, function (printingArgs) {\n printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth);\n if (Browser.info.name === 'msie') {\n printWind.resizeTo(screen.availWidth, screen.availHeight);\n }\n printWind = printWindow(_this.inputElement, printWind);\n if (!printingArgs.cancel) {\n var actionArgs = {\n requestType: 'print'\n };\n _this.trigger(events.actionComplete, actionArgs);\n }\n });\n };\n /**\n * Refresh the view of the editor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.refreshUI = function () {\n this.renderModule.refresh();\n };\n /**\n * Shows the Rich Text Editor component in full-screen mode.\n *\n * @returns {void}\n */\n RichTextEditor.prototype.showFullScreen = function () {\n this.fullScreenModule.showFullScreen();\n };\n /**\n * Enables the give toolbar items in the Rich Text Editor component.\n *\n * @returns {void}\n * @param {string | string[]} items - Specifies the single or collection of items\n * @param {boolean} muteToolbarUpdate enable/disables the toolbar item status in RichTextEditor.\n * that you want to be enable in Rich Text Editor’s Toolbar.\n *\n * @public\n */\n RichTextEditor.prototype.enableToolbarItem = function (items, muteToolbarUpdate) {\n this.toolbarModule.enableTBarItems(this.getBaseToolbarObject(), items, true, muteToolbarUpdate);\n };\n /**\n * Disables the given toolbar items in the Rich Text Editor component.\n *\n * @returns {void}\n * @param {string | string[]} items - Specifies the single or collection of items\n * @param {boolean} muteToolbarUpdate enable/disables the toolbar item status in RichTextEditor.\n * that you want to be disable in Rich Text Editor’s Toolbar.\n *\n * @public\n */\n RichTextEditor.prototype.disableToolbarItem = function (items, muteToolbarUpdate) {\n this.toolbarModule.enableTBarItems(this.getBaseToolbarObject(), items, false, muteToolbarUpdate);\n };\n /**\n * Removes the give toolbar items from the Rich Text Editor component.\n *\n * @returns {void}\n * @param {string | string[]} items - Specifies the single or collection of items\n * that you want to be remove from Rich Text Editor’s Toolbar.\n *\n * @public\n */\n RichTextEditor.prototype.removeToolbarItem = function (items) {\n this.toolbarModule.removeTBarItems(items);\n };\n /**\n * Get the selected range from the RichTextEditor's content.\n *\n * @returns {void}\n * @public\n\n */\n RichTextEditor.prototype.getRange = function () {\n return this.formatter.editorManager.nodeSelection.getRange(this.contentModule.getDocument());\n };\n RichTextEditor.prototype.initializeServices = function () {\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('rteLocale', this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale));\n this.serviceLocator.register('dialogRenderObject', new DialogRenderer(this));\n };\n RichTextEditor.prototype.RTERender = function () {\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.fullScreenModule = new FullScreen(this);\n this.enterKeyModule = new EnterKeyAction(this);\n this.renderModule.render();\n this.inputElement = this.contentModule.getEditPanel();\n this.setHeight(this.height);\n setAttributes(this.htmlAttributes, this, false, true);\n if (this.iframeSettings) {\n this.setIframeSettings();\n }\n this.setCssClass(this.cssClass);\n this.updateEnable();\n this.setPlaceHolder();\n this.updateRTL();\n this.updateReadOnly();\n this.updatePanelValue();\n if (this.enableHtmlEncode && !isNOU(this.value)) {\n this.setProperties({ value: this.encode(decode(this.value)) });\n }\n };\n RichTextEditor.prototype.setIframeSettings = function () {\n if (this.iframeSettings.resources) {\n var styleSrc = this.iframeSettings.resources.styles;\n var scriptSrc = this.iframeSettings.resources.scripts;\n if (this.iframeSettings.resources.scripts.length > 0) {\n this.InjectSheet(true, scriptSrc);\n }\n if (this.iframeSettings.resources.styles.length > 0) {\n this.InjectSheet(false, styleSrc);\n }\n }\n if (this.iframeSettings.attributes) {\n setAttributes(this.iframeSettings.attributes, this, true, false);\n }\n };\n RichTextEditor.prototype.InjectSheet = function (scriptSheet, srcList) {\n try {\n if (srcList && srcList.length > 0) {\n var iFrame = this.contentModule.getDocument();\n var target = iFrame.querySelector('head');\n for (var i = 0; i < srcList.length; i++) {\n if (scriptSheet) {\n var scriptEle = this.createScriptElement();\n scriptEle.src = srcList[i];\n target.appendChild(scriptEle);\n }\n else {\n var styleEle = this.createStyleElement();\n styleEle.href = srcList[i];\n target.appendChild(styleEle);\n }\n }\n }\n }\n catch (e) {\n return;\n }\n };\n RichTextEditor.prototype.createScriptElement = function () {\n var scriptEle = this.createElement('script', {\n className: classes.CLS_SCRIPT_SHEET\n });\n scriptEle.type = 'text/javascript';\n return scriptEle;\n };\n RichTextEditor.prototype.createStyleElement = function () {\n var styleEle = this.createElement('link', {\n className: classes.CLS_STYLE_SHEET\n });\n styleEle.rel = 'stylesheet';\n return styleEle;\n };\n RichTextEditor.prototype.setValue = function (isPropertyChange) {\n var _this = this;\n if (this.valueTemplate) {\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n if (regEx.test(this.valueTemplate)) {\n this.setProperties({ value: this.valueTemplate });\n }\n else {\n var compiledTemplate = compile(this.valueTemplate)('', this, 'valueTemplate');\n // eslint-disable-next-line\n if (typeof this.valueTemplate !== 'string' && this.isReact) {\n this.displayTempElem = this.createElement('div');\n for (var i = 0; i < compiledTemplate.length; i++) {\n var item = compiledTemplate[i];\n append([item], this.displayTempElem);\n }\n this.renderTemplates(function () {\n _this.inputElement.innerHTML = _this.displayTempElem.childNodes[0].innerHTML;\n _this.setProperties({ value: _this.inputElement.innerHTML.trim() });\n });\n }\n else {\n var appendElem = this.element;\n if (isPropertyChange) {\n this.inputElement.innerHTML = '';\n appendElem = this.inputElement;\n }\n for (var i = 0; i < compiledTemplate.length; i++) {\n var item = compiledTemplate[i];\n append([item], appendElem);\n }\n this.setProperties({ value: appendElem.innerHTML.trim() });\n this.renderReactTemplates();\n }\n }\n }\n else {\n // eslint-disable-next-line\n var innerHtml = !isNOU(this.element.innerHTML) && this.element.innerHTML.replace(/<(\\/?|\\!?)(!--!--)>/g, '').trim();\n if (innerHtml !== '') {\n if (this.element.tagName === 'TEXTAREA') {\n this.setProperties({ value: decode(innerHtml) });\n }\n else {\n this.setProperties({ value: innerHtml });\n }\n }\n }\n };\n // eslint-disable-next-line\n RichTextEditor.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n RichTextEditor.prototype.updateResizeFlag = function () {\n this.isResizeInitialized = true;\n };\n /**\n * Image max width calculation method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getInsertImgMaxWidth = function () {\n var maxWidth = this.insertImageSettings.maxWidth;\n // eslint-disable-next-line\n var imgPadding = 12;\n var imgResizeBorder = 2;\n var editEle = this.contentModule.getEditPanel();\n var eleStyle = window.getComputedStyle(editEle);\n var editEleMaxWidth = editEle.offsetWidth - (imgPadding + imgResizeBorder +\n parseFloat(eleStyle.paddingLeft.split('px')[0]) + parseFloat(eleStyle.paddingRight.split('px')[0]) +\n parseFloat(eleStyle.marginLeft.split('px')[0]) + parseFloat(eleStyle.marginRight.split('px')[0]));\n return isNOU(maxWidth) ? editEleMaxWidth : maxWidth;\n };\n /**\n * Video max width calculation method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getInsertVidMaxWidth = function () {\n var maxWidth = this.insertVideoSettings.maxWidth;\n // eslint-disable-next-line\n var vidPadding = 12;\n var vidResizeBorder = 2;\n var editEle = this.contentModule.getEditPanel();\n var eleStyle = window.getComputedStyle(editEle);\n var editEleMaxWidth = editEle.offsetWidth - (vidPadding + vidResizeBorder +\n parseFloat(eleStyle.paddingLeft.split('px')[0]) + parseFloat(eleStyle.paddingRight.split('px')[0]) +\n parseFloat(eleStyle.marginLeft.split('px')[0]) + parseFloat(eleStyle.marginRight.split('px')[0]));\n return isNOU(maxWidth) ? editEleMaxWidth : maxWidth;\n };\n /**\n * setContentHeight method\n *\n * @param {string} target - specifies the target value.\n * @param {boolean} isExpand - specifies the bollean value.\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.setContentHeight = function (target, isExpand) {\n var heightValue;\n var topValue = 0;\n var rteHeightPercent;\n var heightPercent = typeof (this.height) === 'string' && this.height.indexOf('%') > -1;\n var cntEle = (this.sourceCodeModule.getPanel() &&\n this.sourceCodeModule.getPanel().parentElement.style.display === 'block') ? this.sourceCodeModule.getPanel().parentElement :\n this.contentModule.getPanel();\n var rteHeight = this.element.offsetHeight;\n if (rteHeight === 0 && this.height !== 'auto' && !this.getToolbar()) {\n rteHeight = parseInt(this.height, 10);\n if (heightPercent) {\n rteHeightPercent = this.height;\n }\n }\n var tbHeight = this.getToolbar() ? this.toolbarModule.getToolbarHeight() : 0;\n var rzHandle = this.element.querySelector('.' + classes.CLS_RTE_RES_HANDLE);\n var rzHeight = this.enableResize ? (!isNOU(rzHandle) ? (rzHandle.offsetHeight + 8) : 0) : 0;\n var expandPopHeight = this.getToolbar() ? this.toolbarModule.getExpandTBarPopHeight() : 0;\n if (this.toolbarSettings.type === ToolbarType.Expand && isExpand) {\n heightValue = (this.height === 'auto' && rzHeight === 0) ? 'auto' : rteHeight - (tbHeight + expandPopHeight + rzHeight) + 'px';\n topValue = (!this.toolbarSettings.enableFloating) ? expandPopHeight : 0;\n }\n else {\n if (this.height === 'auto' && !(this.element.classList.contains('e-rte-full-screen')) && !this.isResizeInitialized) {\n heightValue = 'auto';\n }\n else {\n heightValue = heightPercent && rteHeightPercent ? rteHeightPercent : rteHeight - (tbHeight + rzHeight) + 'px';\n }\n }\n if (target !== 'windowResize') {\n if (this.iframeSettings.enable) {\n if (heightValue !== 'auto') {\n setStyleAttribute(cntEle, { height: heightValue, marginTop: topValue + 'px' });\n }\n }\n else {\n setStyleAttribute(cntEle, { height: heightValue, marginTop: topValue + 'px' });\n }\n }\n if (this.iframeSettings.enable && target === 'sourceCode') {\n var codeElement = select('.' + classes.CLS_RTE_CONTENT, this.element);\n setStyleAttribute(codeElement, { height: heightValue, marginTop: topValue + 'px' });\n }\n if (this.toolbarSettings.enableFloating && this.getToolbar() && !this.inlineMode.enable) {\n var tbWrapHeight = (isExpand ? (tbHeight + expandPopHeight) : tbHeight) + 'px';\n setStyleAttribute(this.getToolbar().parentElement, { height: tbWrapHeight });\n }\n if (rzHeight === 0) {\n this.autoResize();\n }\n };\n /**\n * Retrieves the HTML from RichTextEditor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getHtml = function () {\n var htmlValue = this.contentModule.getEditPanel().innerHTML;\n return (this.enableXhtml && (htmlValue === '


' || htmlValue === '

' ||\n htmlValue === '
') ? null : this.serializeValue(htmlValue));\n };\n /**\n * Retrieves the Rich Text Editor's XHTML validated HTML content when `enableXhtml` property is enabled.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getXhtml = function () {\n var currentValue = this.value;\n if (!isNOU(currentValue) && this.enableXhtml) {\n currentValue = this.htmlEditorModule.xhtmlValidation.selfEncloseValidation(currentValue);\n }\n return currentValue;\n };\n /**\n * Shows the source HTML/MD markup.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.showSourceCode = function () {\n if (this.readonly) {\n return;\n }\n this.notify(events.sourceCode, {});\n };\n /**\n * Returns the maximum number of characters in the Rich Text Editor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getCharCount = function () {\n var htmlText = this.editorMode === 'Markdown' ? this.inputElement.value.trim() :\n this.inputElement.textContent.trim();\n var htmlLength;\n if (this.editorMode !== 'Markdown' && htmlText.indexOf('\\u200B') !== -1) {\n htmlLength = htmlText.replace(/\\u200B/g, '').length;\n }\n else {\n htmlLength = htmlText.length;\n }\n return htmlLength;\n };\n /**\n * Show the dialog in the Rich Text Editor.\n *\n * @param {DialogType} type - specifies the dialog type.\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.showDialog = function (type) {\n if (type === DialogType.InsertLink) {\n this.notify(events.showLinkDialog, {});\n }\n else if (type === DialogType.InsertImage) {\n this.notify(events.showImageDialog, {});\n }\n else if (type === DialogType.InsertAudio) {\n this.notify(events.showAudioDialog, {});\n }\n else if (type === DialogType.InsertVideo) {\n this.notify(events.showVideoDialog, {});\n }\n else if (type === DialogType.InsertTable) {\n this.notify(events.showTableDialog, {});\n }\n };\n /**\n * Close the dialog in the Rich Text Editor.\n *\n * @param {DialogType} type - specifies the dialog type.\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.closeDialog = function (type) {\n if (type === DialogType.InsertLink) {\n this.notify(events.closeLinkDialog, {});\n }\n else if (type === DialogType.InsertImage) {\n this.notify(events.closeImageDialog, {});\n }\n else if (type === DialogType.InsertAudio) {\n this.notify(events.closeAudioDialog, {});\n }\n else if (type === DialogType.InsertVideo) {\n this.notify(events.closeVideoDialog, {});\n }\n else if (type === DialogType.InsertTable) {\n this.notify(events.closeTableDialog, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getBaseToolbarObject = function () {\n var tbObj;\n if (this.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n tbObj = this.quickToolbarModule && this.quickToolbarModule.getInlineBaseToolbar();\n }\n else {\n tbObj = this.toolbarModule && this.toolbarModule.getBaseToolbar();\n }\n return tbObj;\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getToolbar = function () {\n return this.toolbarModule ? this.toolbarModule.getToolbarElement() : null;\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.getToolbarElement = function () {\n return this.toolbarModule && this.toolbarModule.getToolbarElement();\n };\n /**\n * @returns {void}\n * getID method\n *\n * @hidden\n\n */\n RichTextEditor.prototype.getID = function () {\n return (this.originalElement.tagName === 'TEXTAREA' ? this.valueContainer.id : this.element.id);\n };\n RichTextEditor.prototype.mouseDownHandler = function (e) {\n var touch = (e.touches ? e.changedTouches[0] : e);\n addClass([this.element], [classes.CLS_FOCUS]);\n this.preventDefaultResize(e);\n this.notify(events.mouseDown, { args: e });\n this.clickPoints = { clientX: touch.clientX, clientY: touch.clientY };\n };\n RichTextEditor.prototype.preventImgResize = function (e) {\n if (e.target.nodeName.toLocaleLowerCase() === 'img') {\n e.preventDefault();\n }\n };\n /**\n * preventDefaultResize method\n *\n * @param {FocusEvent} e - specifies the event.\n * @returns {void}\n * @hidden\n\n */\n // eslint-disable-next-line\n RichTextEditor.prototype.preventDefaultResize = function (e) {\n if (Browser.info.name === 'msie') {\n this.contentModule.getEditPanel().addEventListener('mscontrolselect', this.preventImgResize);\n }\n else if (Browser.info.name === 'mozilla') {\n this.contentModule.getDocument().execCommand('enableObjectResizing', false, 'false');\n this.contentModule.getDocument().execCommand('enableInlineTableEditing', false, 'false');\n }\n };\n // eslint-disable-next-line\n RichTextEditor.prototype.defaultResize = function (e) {\n if (Browser.info.name === 'msie') {\n this.contentModule.getEditPanel().removeEventListener('mscontrolselect', this.preventImgResize);\n }\n else if (Browser.info.name === 'mozilla') {\n this.contentModule.getDocument().execCommand('enableObjectResizing', true, 'true');\n this.contentModule.getDocument().execCommand('enableInlineTableEditing', true, 'true');\n }\n };\n RichTextEditor.prototype.resizeHandler = function () {\n var isExpand = false;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onResizeHandler, true);\n return;\n }\n if (this.toolbarSettings.enable && !this.inlineMode.enable) {\n this.toolbarModule.refreshToolbarOverflow();\n isExpand = this.toolbarModule.baseToolbar.toolbarObj.element.classList.contains(classes.CLS_EXPAND_OPEN);\n }\n this.setContentHeight('windowResize', isExpand);\n this.notify(events.windowResize, null);\n };\n RichTextEditor.prototype.scrollHandler = function (e) {\n if (this.element) {\n this.notify(events.scroll, { args: e });\n }\n };\n RichTextEditor.prototype.contentScrollHandler = function (e) {\n this.notify(events.contentscroll, { args: e });\n };\n RichTextEditor.prototype.focusHandler = function (e) {\n if ((!this.isRTE || this.isFocusOut)) {\n this.isRTE = this.isFocusOut ? false : true;\n this.isFocusOut = false;\n addClass([this.element], [classes.CLS_FOCUS]);\n if (this.editorMode === 'HTML') {\n this.cloneValue = (this.inputElement.innerHTML === '


' || this.inputElement.innerHTML === '

' ||\n this.inputElement.innerHTML === '
') ? null : this.enableHtmlEncode ?\n this.encode(decode(this.inputElement.innerHTML)) : this.inputElement.innerHTML;\n }\n else {\n this.cloneValue = this.inputElement.value === '' ? null :\n this.inputElement.value;\n }\n var active = document.activeElement;\n if (active === this.element || active === this.getToolbarElement() || active === this.contentModule.getEditPanel()\n || ((this.iframeSettings.enable && active === this.contentModule.getPanel()) &&\n e.target && !e.target.classList.contains('e-img-inner')\n && (e.target && e.target.parentElement\n && !e.target.parentElement.classList.contains('e-img-wrap')))\n || closest(active, '.e-rte-toolbar') === this.getToolbarElement()) {\n this.contentModule.getEditPanel().focus();\n if (!isNOU(this.getToolbarElement())) {\n this.getToolbarElement().setAttribute('tabindex', '-1');\n var items = this.getToolbarElement().querySelectorAll('[tabindex=\"0\"]');\n for (var i = 0; i < items.length; i++) {\n items[i].setAttribute('tabindex', '-1');\n }\n }\n }\n this.preventDefaultResize(e);\n this.trigger('focus', { event: e, isInteracted: Object.keys(e).length === 0 ? false : true });\n if (!isNOU(this.saveInterval) && this.saveInterval > 0 && !this.autoSaveOnIdle) {\n this.timeInterval = setInterval(this.updateValueOnIdle.bind(this), this.saveInterval);\n }\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n }\n if (!isNOU(this.getToolbarElement())) {\n var toolbarItem = this.getToolbarElement().querySelectorAll('input,select,button,a,[tabindex]');\n for (var i = 0; i < toolbarItem.length; i++) {\n if ((!toolbarItem[i].classList.contains('e-rte-dropdown-btn') &&\n !toolbarItem[i].classList.contains('e-insert-table-btn')) &&\n (!toolbarItem[i].hasAttribute('tabindex') ||\n toolbarItem[i].getAttribute('tabindex') !== '-1')) {\n toolbarItem[i].setAttribute('tabindex', '-1');\n }\n }\n }\n };\n RichTextEditor.prototype.getUpdatedValue = function () {\n var value;\n if (!isNOU(this.tableModule)) {\n this.tableModule.removeResizeElement();\n }\n var getTextArea = this.element.querySelector('.e-rte-srctextarea');\n if (this.editorMode === 'HTML') {\n value = (this.inputElement.innerHTML === '


' || this.inputElement.innerHTML === '

' ||\n this.inputElement.innerHTML === '
') ? null : this.enableHtmlEncode ?\n this.encode(decode(this.inputElement.innerHTML)) : this.inputElement.innerHTML;\n if (getTextArea && getTextArea.style.display === 'block') {\n value = getTextArea.value;\n }\n }\n else {\n value = this.inputElement.value === '' ? null :\n this.inputElement.value;\n }\n return value;\n };\n RichTextEditor.prototype.updateValueOnIdle = function () {\n if (!isNOU(this.tableModule) && !isNOU(this.inputElement.querySelector('.e-table-box.e-rbox-select'))) {\n return;\n }\n this.setProperties({ value: this.getUpdatedValue() }, true);\n this.valueContainer.value = this.value;\n this.isValueChangeBlurhandler = false;\n this.invokeChangeEvent();\n };\n RichTextEditor.prototype.updateIntervalValue = function () {\n clearTimeout(this.idleInterval);\n this.idleInterval = setTimeout(this.updateValueOnIdle.bind(this), 0);\n };\n RichTextEditor.prototype.updateStatus = function (e) {\n if (!isNOU(e.html) || !isNOU(e.markdown)) {\n var status_1 = this.formatter.editorManager.undoRedoManager.getUndoStatus();\n var eventArgs = {\n undo: status_1.undo,\n redo: status_1.redo,\n html: e.html,\n markdown: e.markdown\n };\n this.trigger(events.updatedToolbarStatus, eventArgs);\n }\n };\n RichTextEditor.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var rteElement = closest(target, '.' + classes.CLS_RTE);\n if (!this.element.contains(e.target) && document !== e.target && rteElement !== this.element &&\n !closest(target, '[aria-owns=\"' + this.getID() + '\"]')) {\n this.isBlur = true;\n this.isRTE = false;\n }\n this.notify(events.docClick, { args: e });\n if (Browser.info.name !== 'msie' && e.detail > 3) {\n e.preventDefault();\n }\n };\n RichTextEditor.prototype.blurHandler = function (e) {\n var trg = e.relatedTarget;\n if (trg) {\n var rteElement = closest(trg, '.' + classes.CLS_RTE);\n if (rteElement && rteElement === this.element) {\n this.isBlur = false;\n if (trg === this.getToolbarElement()) {\n trg.setAttribute('tabindex', '-1');\n }\n }\n else if (closest(trg, '[aria-owns=\"' + this.getID() + '\"]')) {\n this.isBlur = false;\n }\n else {\n this.isBlur = true;\n trg = null;\n }\n }\n if (this.isBlur && isNOU(trg)) {\n removeClass([this.element], [classes.CLS_FOCUS]);\n this.notify(events.focusChange, {});\n var value = this.getUpdatedValue();\n this.setProperties({ value: value });\n this.notify(events.toolbarRefresh, { args: e, documentNode: document });\n this.isValueChangeBlurhandler = true;\n this.invokeChangeEvent();\n this.isFocusOut = true;\n this.isBlur = false;\n dispatchEvent(this.valueContainer, 'focusout');\n this.defaultResize(e);\n this.trigger('blur', { event: e, isInteracted: Object.keys(e).length === 0 ? false : true });\n if (!isNOU(this.timeInterval)) {\n clearInterval(this.timeInterval);\n this.timeInterval = null;\n }\n if (!isNOU(this.placeHolderWrapper) && this.element.querySelector('[title = Preview]')) {\n this.placeHolderWrapper.style.display = \"none\";\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n }\n else {\n this.isRTE = true;\n }\n };\n /**\n * invokeChangeEvent method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.contentChanged = function () {\n if (this.autoSaveOnIdle) {\n if (!isNOU(this.saveInterval)) {\n clearTimeout(this.timeInterval);\n this.timeInterval = setTimeout(this.updateIntervalValue.bind(this), this.saveInterval);\n }\n }\n };\n /**\n * invokeChangeEvent method\n *\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.invokeChangeEvent = function () {\n var currentValue;\n if (this.enableXhtml) {\n currentValue = this.getXhtml();\n }\n else {\n currentValue = this.value;\n }\n var eventArgs = {\n value: currentValue,\n isInteracted: this.isValueChangeBlurhandler\n };\n if (this.value !== this.cloneValue) {\n this.trigger('change', eventArgs);\n this.cloneValue = this.value;\n }\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.wireScrollElementsEvents = function () {\n this.scrollParentElements = getScrollableParent(this.element);\n for (var _i = 0, _a = this.scrollParentElements; _i < _a.length; _i++) {\n var element = _a[_i];\n EventHandler.add(element, 'scroll', this.scrollHandler, this);\n }\n if (!this.iframeSettings.enable) {\n EventHandler.add(this.contentModule.getPanel(), 'scroll', this.contentScrollHandler, this);\n }\n };\n RichTextEditor.prototype.wireContextEvent = function () {\n if (this.quickToolbarSettings.showOnRightClick) {\n EventHandler.add(this.inputElement, 'contextmenu', this.contextHandler, this);\n if (Browser.isDevice) {\n this.touchModule = new EJ2Touch(this.inputElement, { tapHold: this.touchHandler.bind(this), tapHoldThreshold: 500 });\n }\n }\n };\n RichTextEditor.prototype.unWireContextEvent = function () {\n EventHandler.remove(this.inputElement, 'contextmenu', this.contextHandler);\n if (Browser.isDevice && this.touchModule) {\n this.touchModule.destroy();\n }\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.unWireScrollElementsEvents = function () {\n this.scrollParentElements = getScrollableParent(this.element);\n for (var _i = 0, _a = this.scrollParentElements; _i < _a.length; _i++) {\n var element = _a[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (!this.iframeSettings.enable) {\n EventHandler.remove(this.contentModule.getPanel(), 'scroll', this.contentScrollHandler);\n }\n };\n RichTextEditor.prototype.touchHandler = function (e) {\n this.notifyMouseUp(e.originalEvent);\n this.triggerEditArea(e.originalEvent);\n };\n RichTextEditor.prototype.contextHandler = function (e) {\n var closestElem = closest(e.target, 'a, table, img');\n if (this.inlineMode.onSelection === false || (!isNOU(closestElem) && this.inputElement.contains(closestElem)\n && (closestElem.tagName === 'IMG' || closestElem.tagName === 'TABLE' || closestElem.tagName === 'A'))) {\n e.preventDefault();\n }\n };\n RichTextEditor.prototype.resetHandler = function () {\n var defaultValue = this.valueContainer.defaultValue.trim();\n this.setProperties({ value: defaultValue === '' ? null : defaultValue });\n };\n /**\n * @returns {void}\n * @hidden\n\n */\n RichTextEditor.prototype.autoResize = function () {\n var _this = this;\n if (this.height === 'auto') {\n if (this.editorMode === 'Markdown') {\n setTimeout(function () {\n _this.setAutoHeight(_this.inputElement);\n }, 0);\n }\n else if (this.iframeSettings.enable) {\n var iframeElement_1 = this.element.querySelector('#' + this.getID() + '_rte-view');\n setTimeout(function () {\n _this.setAutoHeight(iframeElement_1);\n }, 100);\n this.inputElement.style.overflow = 'hidden';\n }\n }\n else {\n this.inputElement.style.overflow = null;\n }\n };\n RichTextEditor.prototype.setAutoHeight = function (element) {\n if (!isNOU(element)) {\n element.style.height = '';\n element.style.height = this.inputElement.scrollHeight + 'px';\n element.style.overflow = 'hidden';\n }\n };\n RichTextEditor.prototype.wireEvents = function () {\n this.element.addEventListener('focusin', this.onFocusHandler, true);\n this.element.addEventListener('focusout', this.onBlurHandler, true);\n this.on(events.contentChanged, this.contentChanged, this);\n this.on(events.resizeInitialized, this.updateResizeFlag, this);\n this.on(events.updateTbItemsStatus, this.updateStatus, this);\n if (this.readonly && this.enabled) {\n return;\n }\n this.bindEvents();\n };\n RichTextEditor.prototype.restrict = function (e) {\n if (this.maxLength >= 0) {\n var element = this.editorMode === 'Markdown' ? this.contentModule.getText() :\n (e && e.currentTarget.textContent);\n if (!element) {\n return;\n }\n var array = [8, 16, 17, 37, 38, 39, 40, 46, 65];\n var arrayKey = void 0;\n for (var i = 0; i <= array.length - 1; i++) {\n if (e.which === array[i]) {\n if (e.ctrlKey && e.which === 65) {\n return;\n }\n else if (e.which !== 65) {\n arrayKey = array[i];\n return;\n }\n }\n }\n if ((element.length >= this.maxLength && this.maxLength !== -1) && e.which !== arrayKey) {\n e.preventDefault();\n }\n }\n };\n RichTextEditor.prototype.bindEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.inputElement, {\n keyAction: this.keyDown.bind(this), keyConfigs: __assign({}, this.formatter.keyConfig, this.keyConfig), eventName: 'keydown'\n });\n var formElement = closest(this.valueContainer, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetHandler, this);\n }\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n EventHandler.add(this.inputElement, 'paste', this.onPaste, this);\n EventHandler.add(this.inputElement, Browser.touchEndEvent, debounce(this.mouseUp, 30), this);\n EventHandler.add(this.inputElement, Browser.touchStartEvent, this.mouseDownHandler, this);\n this.wireContextEvent();\n this.formatter.editorManager.observer.on(CONSTANT.KEY_DOWN_HANDLER, this.editorKeyDown, this);\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onResizeHandler, true);\n if (this.iframeSettings.enable) {\n EventHandler.add(this.inputElement, 'focusin', this.focusHandler, this);\n EventHandler.add(this.inputElement, 'focusout', this.blurHandler, this);\n EventHandler.add(this.inputElement.ownerDocument, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.inputElement.ownerDocument, Browser.touchStartEvent, this.onIframeMouseDown, this);\n }\n this.wireScrollElementsEvents();\n };\n RichTextEditor.prototype.onIframeMouseDown = function (e) {\n this.isBlur = false;\n this.currentTarget = e.target;\n this.notify(events.iframeMouseDown, e);\n };\n RichTextEditor.prototype.editorKeyDown = function (e) {\n switch (e.event.action) {\n case 'copy':\n this.onCopy();\n break;\n case 'cut':\n this.onCut();\n break;\n case 'tab':\n if (this.iframeSettings.enable) {\n this.isBlur = true;\n }\n break;\n }\n if (e.callBack && (e.event.action === 'copy' || e.event.action === 'cut' || e.event.action === 'delete')) {\n e.callBack({\n requestType: e.event.action,\n editorMode: 'HTML',\n event: e.event\n });\n }\n };\n RichTextEditor.prototype.unWireEvents = function () {\n this.element.removeEventListener('focusin', this.onFocusHandler, true);\n this.element.removeEventListener('focusout', this.onBlurHandler, true);\n this.off(events.contentChanged, this.contentChanged);\n this.off(events.resizeInitialized, this.updateResizeFlag);\n this.off(events.updateTbItemsStatus, this.updateStatus);\n if (this.readonly && this.enabled) {\n return;\n }\n this.unbindEvents();\n };\n RichTextEditor.prototype.unbindEvents = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n var formElement = closest(this.valueContainer, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetHandler);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n EventHandler.remove(this.inputElement, 'paste', this.onPaste);\n EventHandler.remove(this.inputElement, Browser.touchEndEvent, debounce(this.mouseUp, 30));\n EventHandler.remove(this.inputElement, Browser.touchStartEvent, this.mouseDownHandler);\n this.unWireContextEvent();\n if (this.formatter) {\n this.formatter.editorManager.observer.off(CONSTANT.KEY_DOWN_HANDLER, this.editorKeyDown);\n }\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onResizeHandler, true);\n if (this.iframeSettings.enable) {\n EventHandler.remove(this.inputElement, 'focusin', this.focusHandler);\n EventHandler.remove(this.inputElement, 'focusout', this.blurHandler);\n EventHandler.remove(this.inputElement.ownerDocument, 'scroll', this.contentScrollHandler);\n EventHandler.remove(this.inputElement.ownerDocument, Browser.touchStartEvent, this.onIframeMouseDown);\n }\n this.unWireScrollElementsEvents();\n };\n __decorate([\n Complex({}, ToolbarSettings)\n ], RichTextEditor.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, QuickToolbarSettings)\n ], RichTextEditor.prototype, \"quickToolbarSettings\", void 0);\n __decorate([\n Complex({}, PasteCleanupSettings)\n ], RichTextEditor.prototype, \"pasteCleanupSettings\", void 0);\n __decorate([\n Complex({}, FormatPainterSettings)\n ], RichTextEditor.prototype, \"formatPainterSettings\", void 0);\n __decorate([\n Complex({}, IFrameSettings)\n ], RichTextEditor.prototype, \"iframeSettings\", void 0);\n __decorate([\n Complex({}, ImageSettings)\n ], RichTextEditor.prototype, \"insertImageSettings\", void 0);\n __decorate([\n Complex({}, AudioSettings)\n ], RichTextEditor.prototype, \"insertAudioSettings\", void 0);\n __decorate([\n Complex({}, VideoSettings)\n ], RichTextEditor.prototype, \"insertVideoSettings\", void 0);\n __decorate([\n Complex({}, TableSettings)\n ], RichTextEditor.prototype, \"tableSettings\", void 0);\n __decorate([\n Property(0)\n ], RichTextEditor.prototype, \"floatingToolbarOffset\", void 0);\n __decorate([\n Complex({}, InlineMode)\n ], RichTextEditor.prototype, \"inlineMode\", void 0);\n __decorate([\n Complex({}, FileManagerSettings)\n ], RichTextEditor.prototype, \"fileManagerSettings\", void 0);\n __decorate([\n Property('100%')\n ], RichTextEditor.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], RichTextEditor.prototype, \"showTooltip\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableResize\", void 0);\n __decorate([\n Property({})\n ], RichTextEditor.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"autoSaveOnIdle\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], RichTextEditor.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], RichTextEditor.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableHtmlEncode\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableXhtml\", void 0);\n __decorate([\n Property('auto')\n ], RichTextEditor.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"value\", void 0);\n __decorate([\n Property('P')\n ], RichTextEditor.prototype, \"enterKey\", void 0);\n __decorate([\n Property('BR')\n ], RichTextEditor.prototype, \"shiftEnterKey\", void 0);\n __decorate([\n Property(30)\n ], RichTextEditor.prototype, \"undoRedoSteps\", void 0);\n __decorate([\n Property(300)\n ], RichTextEditor.prototype, \"undoRedoTimer\", void 0);\n __decorate([\n Property('HTML')\n ], RichTextEditor.prototype, \"editorMode\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"keyConfig\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"showCharCount\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableTabKey\", void 0);\n __decorate([\n Property(false)\n ], RichTextEditor.prototype, \"enableAutoUrl\", void 0);\n __decorate([\n Property(-1)\n ], RichTextEditor.prototype, \"maxLength\", void 0);\n __decorate([\n Complex({}, Format)\n ], RichTextEditor.prototype, \"format\", void 0);\n __decorate([\n Complex({}, NumberFormatList)\n ], RichTextEditor.prototype, \"numberFormatList\", void 0);\n __decorate([\n Complex({}, BulletFormatList)\n ], RichTextEditor.prototype, \"bulletFormatList\", void 0);\n __decorate([\n Complex({}, FontFamily)\n ], RichTextEditor.prototype, \"fontFamily\", void 0);\n __decorate([\n Complex({}, FontSize)\n ], RichTextEditor.prototype, \"fontSize\", void 0);\n __decorate([\n Complex({}, FontColor)\n ], RichTextEditor.prototype, \"fontColor\", void 0);\n __decorate([\n Complex({}, BackgroundColor)\n ], RichTextEditor.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(10000)\n ], RichTextEditor.prototype, \"saveInterval\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeDialogOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"dialogOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeDialogClose\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"dialogClose\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeQuickToolbarOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"quickToolbarOpen\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"quickToolbarClose\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"toolbarStatusUpdate\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"updatedToolbarStatus\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageSelected\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeImageUpload\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageUploading\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageUploadSuccess\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageUploadFailed\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"imageRemoving\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"afterImageDelete\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileSelected\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeFileUpload\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileUploading\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileUploadSuccess\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileUploadFailed\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"fileRemoving\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"afterMediaDelete\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforePasteCleanup\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"afterPasteCleanup\", void 0);\n __decorate([\n Event()\n ], RichTextEditor.prototype, \"beforeImageDrop\", void 0);\n __decorate([\n Property(null)\n ], RichTextEditor.prototype, \"formatter\", void 0);\n RichTextEditor = __decorate([\n NotifyPropertyChanges\n ], RichTextEditor);\n return RichTextEditor;\n}(Component));\nexport { RichTextEditor };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar reactUid = 0;\nvar isColEName = new RegExp('\\]');\n// tslint:disable\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.mountingState = false;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n _this.isCreated = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n // tslint:disable-next-line:no-any\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.mountingState = true;\n this.renderReactTemplates();\n this.mountingState = false;\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n if (prev !== this.props) {\n this.isshouldComponentUpdateCalled = true;\n this.refreshProperties(this.props, this.props);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele && !this.isAppendCalled) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n // tslint:disable-next-line:no-any\n /**\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n /**\n * @private\n */\n ComponentBase.prototype.updateProperties = function (nextProps, silent) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] :\n (!isNullOrUndefined(this['statelessTemplateProps']) ? this['statelessTemplateProps'] : []);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[\"\" + propkey]) &&\n this.htmlattributes[\"\" + propkey] !== dProps[\"\" + propkey]) {\n this.htmlattributes[\"\" + propkey] = dProps[\"\" + propkey];\n }\n if (this.compareValues(this.props[\"\" + propkey], nextProps[\"\" + propkey])) {\n delete dProps[\"\" + propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.clsName = true;\n var propsClsName = this.props[\"\" + propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[parseInt(i.toString(), 10)]);\n }\n var dpropsClsName = dProps[\"\" + propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[parseInt(j.toString(), 10)]);\n }\n }\n else if (propkey !== 'disabled' && !this.properties.hasOwnProperty(propkey)) {\n delete dProps[\"\" + propkey];\n }\n }\n else if (propkey === 'value' && nextProps[\"\" + propkey] === this[\"\" + propkey]) {\n delete dProps[\"\" + propkey];\n }\n else if (statelessTemplates.indexOf(propkey) > -1 && ((propkey === 'content' && typeof dProps[\"\" + propkey] === 'function') || (nextProps[\"\" + propkey].toString() === this[\"\" + propkey].toString()))) {\n delete dProps[\"\" + propkey];\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || this.props.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] : [];\n if (Object.keys(dProps).length) {\n if (!silent) {\n // tslint:disable-next-line:no-any\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n if (statelessTemplates.indexOf('directiveTemplates') === -1) {\n this.refreshChild(silent, nextProps);\n }\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n var stringValue = ['autocomplete', 'dropdownlist', 'combobox'];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n }\n }\n if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if ((className.indexOf(clsList[parseInt(i.toString(), 10)]) === -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[parseInt(i.toString(), 10)];\n }\n }\n this.clsName = false;\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n _this.isCreated = true;\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n }, 10);\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n if (value1.constructor &&\n value1.constructor.name === value2.constructor.name &&\n (value1.constructor.name === 'Query' ||\n value1.constructor.name === 'DataManager')) {\n if (JSON.stringify(value1) === JSON.stringify(value2)) {\n return true;\n }\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n var templateProps = !isNullOrUndefined(this['templateProps']) ? this['templateProps'] : [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[parseInt(i.toString(), 10)];\n var newProp = newProps[parseInt(i.toString(), 10)];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[\"\" + key];\n var newValue = newProp[\"\" + key];\n if (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof (newValue[parseInt(_j.toString(), 10)]) === 'object') {\n return { status: true };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[\"\" + key] = newValue;\n }\n if (!oldProp.hasOwnProperty(key) || !((templateProps.length > 0 && templateProps.indexOf(\"\" + key) === -1 && typeof (newValue) === 'function') ? this.compareValues(oldValue.toString(), newValue.toString()) : this.compareValues(oldValue, newValue))) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[\"\" + key] = newValue;\n }\n }\n }\n else if (newProps[parseInt(i.toString(), 10)] === oldProps[parseInt(i.toString(), 10)]) {\n status = true;\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (this.getModuleName() === 'grid' && propName === 'columns' && isNullOrUndefined(curObj['field'])) {\n curObj['field'] = undefined;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[\"\" + fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n var key = dKeys[parseInt(i.toString(), 10)];\n if (!directiveValue.hasOwnProperty(key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[\"\" + key], directiveValue[\"\" + key], key);\n if (compareOutput.status) {\n delete directiveValue[\"\" + key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[\"\" + key] = directiveValue[\"\" + key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[parseInt(_c1.toString(), 10)]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[parseInt(_c1.toString(), 10)].key + '.' + changedProps[parseInt(_c1.toString(), 10)].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[parseInt(_c1.toString(), 10)].value);\n }\n else {\n extend(propInstance, changedProps[parseInt(_c1.toString(), 10)].value);\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance_1 = getValue(changes.key + '.' + changes.index, this);\n if (propInstance_1 && propInstance_1.setProperties) {\n propInstance_1.setProperties(changes.value);\n }\n else {\n extend(propInstance_1, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true) && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.appendReactElement = function (element, container) {\n var portal = ReactDOM.createPortal(element, container);\n if (!this.portals) {\n this.portals = [portal];\n }\n else {\n this.portals.push(portal);\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var indexCount = 0;\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (!isNullOrUndefined(index) && _this.portals[index] && _this.portals[index].propName === propName) {\n _this.portals.splice(index, 1);\n indexCount++;\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[parseInt(i.toString(), 10)].propName === propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[\"\" + ifield];\n if (ifield && mapper) {\n // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[\"\" + key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n /* tslint:disable:no-any */\n if (child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n/* tslint:enable:no-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // eslint-disable-next-line\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar stringCompiler = getTemplateEngine();\n// eslint-disable-next-line\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string') {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { RichTextEditor } from '@syncfusion/ej2-richtexteditor';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `RichTextEditor` represents the react RichTextEditor.\n * ```tsx\n * \n * ```\n */\nvar RichTextEditorComponent = /** @class */ (function (_super) {\n __extends(RichTextEditorComponent, _super);\n function RichTextEditorComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = [\"valueTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n RichTextEditorComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return RichTextEditorComponent;\n}(RichTextEditor));\nexport { RichTextEditorComponent };\napplyMixins(RichTextEditorComponent, [ComponentBase, React.Component]);\n","// eslint-disable-next-line\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState') {\n derivedClass.prototype[\"\" + name] = baseClass.prototype[\"\" + name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : sepItem.offsetHeight;\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n if (itemCount === itemPopCount) {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n var sepDisplay = 'none';\n eleSep.style.display = 'inherit';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearTemplate();\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (typeof newProperty !== 'function') {\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearTemplate();\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, extend, deleteObject, Property, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nexport function getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nexport function upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nexport function setBlankIconStyle(popup, blankIcon) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (blankIcon) {\n var menuItem = [].slice.call(popup.getElementsByClassName('e-item'));\n menuItem.forEach(function (li) {\n if (li.style.paddingLeft || li.style.paddingRight) {\n li.removeAttribute('style');\n }\n });\n }\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (isNullOrUndefined(iconLi)) {\n return;\n }\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\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 { Collection, Event, NotifyPropertyChanges, detach, Property, EventHandler, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, getUniqueID, rippleEffect, getComponent } from '@syncfusion/ej2-base';\nimport { attributes, Component, closest, select, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { classList, removeClass } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { upDownKeyHandler } from './../common/common';\nimport { getModel, Item, setBlankIconStyle } from './../common/common';\nvar classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {},\n _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false',\n _a['aria-expanded'] = 'false',\n _a['type'] = 'button',\n _a['aria-label'] = this.element.textContent ? this.element.textContent : 'dropdownbutton',\n _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? { 'role': 'separator', 'tabindex': '-1' } : { 'role': 'menuitem', 'tabindex': '-1', 'aria-label': tempItem },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (this.enableHtmlSanitizer) {\n li.textContent = item.url ? '' : tempItem;\n }\n else {\n li.innerHTML = item.url ? '' : tempItem;\n }\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n if ((this.target && !this.isColorPicker()) || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated && this.dropDown) {\n this.dropDown.element = null;\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n if (!this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n };\n DropDownButton.prototype.popupWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n if (popupElement) {\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n if (this.closeActionEvents) {\n EventHandler.add(popupElement, this.closeActionEvents, this.focusoutHandler, this);\n }\n }\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n DropDownButton.prototype.popupUnWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n if (popupElement && popupElement.parentElement) {\n EventHandler.remove(popupElement, 'click', this.clickHandler);\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n if (this.closeActionEvents) {\n EventHandler.remove(popupElement, this.closeActionEvents, this.focusoutHandler);\n }\n }\n if (isRippleEnabled && this.rippleFn) {\n this.rippleFn();\n }\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.keyCode === 13 && this.activeElem[0].classList.contains('e-split-btn')) {\n this.activeElem[0].focus();\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.focusoutHandler = function (e) {\n if (this.isPopupCreated && !this.canOpen()) {\n var liTarget = e.relatedTarget;\n if (liTarget && liTarget.className.indexOf('e-item') > -1) {\n var li = this.getLI(liTarget);\n if (li) {\n var liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n var item = this.items[liIdx];\n if (item) {\n var selectEventArgs = { element: li, item: item };\n this.trigger('select', selectEventArgs);\n }\n }\n }\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || (this.target && !this.isColorPicker())) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var eventArgs = void 0;\n var liIdx = void 0;\n var item = void 0;\n var li = this.getLI(trgt);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item };\n this.trigger('select', eventArgs);\n }\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n var isReact = false;\n var popupElem = this.getPopUpElement();\n if (!this.target) {\n this.createItems(true);\n }\n else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n isReact = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n _this.element.setAttribute('aria-owns', _this.getPopUpElement().id);\n if (ul_1) {\n ul_1.focus();\n }\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var popupElement = _this.getPopUpElement();\n if (popupElement) {\n EventHandler.remove(popupElement, 'keydown', _this.keyBoardHandler);\n }\n _this.popupUnWireEvents();\n var ul_2 = _this.getULElement();\n var selectedLi = void 0;\n if (ul_2) {\n selectedLi = ul_2.querySelector('.e-selected');\n }\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n _this.element.removeAttribute('aria-owns');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target || _this.isColorPicker()) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n if (_this.target) {\n _this.isPopupCreated = _this.createPopupOnClick ? false : true;\n }\n }\n else {\n if (ul) {\n ul.focus();\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n if (!this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1 || oldProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n var arrowSpan = this.element.querySelector('span.e-caret');\n newProp.cssClass.indexOf(classNames.VERTICAL) > -1 ? classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right'])\n : classList(arrowSpan, ['e-icon-right'], ['e-icon-bottom']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\nexport { DropDownButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var offsetPos = this.calculateTooltipOffset(this.position);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position) {\n var pos = { top: 0, left: 0 };\n var tooltipEleWidth = this.tooltipEle.offsetWidth;\n var tooltipEleHeight = this.tooltipEle.offsetHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n var tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n var tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n var tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n var tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n if (this.enableHtmlParse) {\n var nodeList = tempArr.length;\n for (var i = 0; i < nodeList; i++) {\n tooltipContent[append(tempArr, tooltipContent), 'innerHTML'] = this.content;\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDataTooltipId = function (target, id) {\n attributes(target, { 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDataTooltipId = function (target) {\n target.removeAttribute('data-tooltip-id');\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n if (Object.keys(this.htmlAttributes).length !== 0) {\n for (var attr in this.htmlAttributes) {\n if (attr === \"class\") {\n this.tooltipEle.classList.add(this.htmlAttributes[\"\" + attr]);\n }\n else {\n this.tooltipEle.setAttribute(attr, this.htmlAttributes[\"\" + attr]);\n }\n }\n }\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDataTooltipId(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDataTooltipId(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string';\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var left = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: false }, eleOffset).left : eleOffset.left;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = left;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDataTooltipId(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var pos = this.calculateTooltipOffset(this.position);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target = [].slice.call(selectAll(this.target, this.element));\n if (target.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName !== \"BODY\") {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName === 'BODY') {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\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 if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n 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 /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '21';\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 ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjE=\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\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 // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n 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 if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string} 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 // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== \"true\" && str !== \"false\") ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+';\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 calculateWidth(element, element.parentElement);\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n }\n else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n 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 * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString())].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n innerWrapper.appendChild(result[parseInt(i.toString())]);\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","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'oncanplay',\n 'oncanplaythrough',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeypress',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onstart',\n 'onpropertychange',\n 'oncopy',\n 'ontoggle',\n 'onpointerout',\n 'onpointermove',\n 'onpointerleave',\n 'onpointerenter',\n 'onpointerrawupdate',\n 'onpointerover',\n 'onbeforecopy',\n 'onbeforecut',\n 'onbeforeinput'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n SanitizeHtmlHelper.sanitize = function (value) {\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue.replace('&', '&');\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[parseInt(j.toString(), 10)].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[parseInt(j.toString(), 10)].removeAttribute(attribute[parseInt(i.toString(), 10)].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Event, remove, addClass, removeClass, detach, getValue, setValue } from '@syncfusion/ej2-base';\nimport { EventHandler, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { attributes, getUniqueID, getInstance, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getModel, Item } from './../common/common';\nimport { DropDownButton } from '../drop-down-button/drop-down-button';\nvar RTL = 'e-rtl';\nvar TAGNAME = 'EJS-SPLITBUTTON';\n/**\n * SplitButton component has primary and secondary button. Primary button is used to select\n * default action and secondary button is used to toggle contextual overlays for displaying list of\n * action items. It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n __extends(SplitButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SplitButtonModel} options - Specifies the splitbutton model\n * @param {string|HTMLButtonElement} element - Specifies the element\n * @hidden\n */\n function SplitButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize Angular support.\n *\n * @private\n * @returns {void}\n */\n SplitButton.prototype.preRender = function () {\n var ele = this.element;\n if (ele.tagName === TAGNAME) {\n var ejInstance = getValue('ej2_instances', ele);\n var btn = this.createElement('button', { attrs: { 'type': 'button' } });\n var wrapper = this.createElement(TAGNAME, { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n btn.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = btn;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.wrapper = wrapper;\n this.element = ele;\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the Component rendering.\n *\n * @returns {void}\n * @private\n */\n SplitButton.prototype.render = function () {\n this.initWrapper();\n this.createPrimaryButton();\n this.renderControl();\n };\n SplitButton.prototype.renderControl = function () {\n this.createSecondaryButton();\n this.setActiveElem([this.element, this.secondaryBtnObj.element]);\n this.setAria();\n this.wireEvents();\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n SplitButton.prototype.addItems = function (items, text) {\n _super.prototype.addItems.call(this, items, text);\n this.secondaryBtnObj.items = this.items;\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n SplitButton.prototype.removeItems = function (items, isUniqueId) {\n _super.prototype.removeItems.call(this, items, isUniqueId);\n this.secondaryBtnObj.items = this.items;\n };\n SplitButton.prototype.initWrapper = function () {\n if (!this.wrapper) {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n }\n this.element.classList.remove('e-' + this.getModuleName());\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n SplitButton.prototype.createPrimaryButton = function () {\n var btnModel = {\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n content: this.content,\n disabled: this.disabled\n };\n this.primaryBtnObj = new Button(btnModel);\n this.primaryBtnObj.createElement = this.createElement;\n this.primaryBtnObj.appendTo(this.element);\n this.element.classList.add('e-' + this.getModuleName());\n this.element.type = 'button';\n this.wrapper.appendChild(this.element);\n };\n SplitButton.prototype.createSecondaryButton = function () {\n var _this = this;\n var btnElem = this.createElement('button', {\n className: 'e-icon-btn',\n attrs: { 'tabindex': '-1' },\n id: this.element.id + '_dropdownbtn'\n });\n this.wrapper.appendChild(btnElem);\n var dropDownBtnModel = {\n cssClass: this.cssClass,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n items: this.items,\n target: this.target,\n createPopupOnClick: this.createPopupOnClick\n };\n dropDownBtnModel.beforeItemRender = function (args) {\n if (_this.createPopupOnClick) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n _this.trigger('beforeItemRender', args);\n };\n dropDownBtnModel.open = function (args) {\n _this.trigger('open', args);\n };\n dropDownBtnModel.close = function (args) {\n _this.trigger('close', args);\n };\n dropDownBtnModel.select = function (args) {\n _this.trigger('select', args);\n };\n dropDownBtnModel.beforeOpen = function (args) {\n if (_this.createPopupOnClick && _this.items.length == 0) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n dropDownBtnModel.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeClose', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n this.secondaryBtnObj = new DropDownButton(dropDownBtnModel);\n this.secondaryBtnObj.createElement = this.createElement;\n this.secondaryBtnObj.appendTo(btnElem);\n if (!this.createPopupOnClick) {\n this.secondaryBtnObj.dropDown.relateTo = this.wrapper;\n this.dropDown = this.secondaryBtnObj.dropDown;\n }\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n };\n SplitButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-expanded': 'false', 'aria-haspopup': 'true',\n 'aria-label': this.element.textContent + ' splitbutton', 'aria-owns': this.element.id + '_dropdownbtn-popup'\n });\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SplitButton.prototype.getModuleName = function () {\n return 'split-btn';\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @returns {void}\n */\n SplitButton.prototype.toggle = function () {\n this.secondaryBtnObj.toggle();\n };\n SplitButton.prototype.destroy = function () {\n var _this = this;\n var classList = [RTL];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n if (this.element) {\n var element = document.getElementById(this.element.id);\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n }\n else {\n removeClass([this.element], classList);\n ['aria-label', 'aria-haspopup', 'aria-expanded', 'aria-owns', 'type'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n _super.prototype.destroy.call(this);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n };\n SplitButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow',\n enter: 'enter'\n }\n });\n };\n SplitButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n };\n SplitButton.prototype.primaryBtnClickHandler = function () {\n this.trigger('click', { element: this.element });\n };\n SplitButton.prototype.btnKeyBoardHandler = function (e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n case 'enter':\n this.clickHandler(e);\n if (!this.getPopUpElement().classList.contains('e-popup-close')) {\n this.element.classList.remove('e-active');\n this.secondaryBtnObj.element.classList.add('e-active');\n }\n else {\n this.secondaryBtnObj.element.classList.remove('e-active');\n }\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SplitButtonModel} newProp - Specifies new properties\n * @param {SplitButtonModel} oldProp - Specifies old properties\n * @returns {void}\n */\n SplitButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var model = ['content', 'iconCss', 'iconPosition', 'cssClass', 'disabled', 'enableRtl'];\n this.primaryBtnObj.setProperties(getModel(newProp, model));\n model = ['beforeOpen', 'beforeItemRender', 'select', 'open',\n 'close', 'cssClass', 'disabled', 'enableRtl', 'createPopupOnClick'];\n if (Object.keys(newProp).indexOf('items') > -1) {\n this.secondaryBtnObj.items = newProp.items;\n this.secondaryBtnObj.dataBind();\n }\n this.secondaryBtnObj.setProperties(getModel(newProp, model));\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n addClass([this.wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.wrapper], RTL);\n }\n else {\n removeClass([this.wrapper], RTL);\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to SplitButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n SplitButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('')\n ], SplitButton.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"iconCss\", void 0);\n __decorate([\n Property('Left')\n ], SplitButton.prototype, \"iconPosition\", void 0);\n __decorate([\n Property(false)\n ], SplitButton.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Collection([], Item)\n ], SplitButton.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], SplitButton.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], SplitButton.prototype, \"created\", void 0);\n SplitButton = __decorate([\n NotifyPropertyChanges\n ], SplitButton);\n return SplitButton;\n}(DropDownButton));\nexport { SplitButton };\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 rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\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 return Deferred;\n}());\nexport { Deferred };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n 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 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","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, Complex, Collection } from '@syncfusion/ej2-base';\nimport { L10n, Internationalization } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, setStyleAttribute, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Tooltip, getZindexPartial } from '@syncfusion/ej2-popups';\n/**\n * Configures the ticks data of the Slider.\n */\nvar TicksData = /** @class */ (function (_super) {\n __extends(TicksData, _super);\n function TicksData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('None')\n ], TicksData.prototype, \"placement\", void 0);\n __decorate([\n Property(10)\n ], TicksData.prototype, \"largeStep\", void 0);\n __decorate([\n Property(1)\n ], TicksData.prototype, \"smallStep\", void 0);\n __decorate([\n Property(false)\n ], TicksData.prototype, \"showSmallTicks\", void 0);\n __decorate([\n Property(null)\n ], TicksData.prototype, \"format\", void 0);\n return TicksData;\n}(ChildProperty));\nexport { TicksData };\n/**\n * It illustrates the color track data in slider.\n * {% codeBlock src='slider/colorrange/index.md' %}{% endcodeBlock %}\n */\nvar ColorRangeData = /** @class */ (function (_super) {\n __extends(ColorRangeData, _super);\n function ColorRangeData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], ColorRangeData.prototype, \"end\", void 0);\n return ColorRangeData;\n}(ChildProperty));\nexport { ColorRangeData };\n/**\n * It illustrates the limit data in slider.\n * {% codeBlock src='slider/limits/index.md' %}{% endcodeBlock %}\n */\nvar LimitData = /** @class */ (function (_super) {\n __extends(LimitData, _super);\n function LimitData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LimitData.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"minEnd\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxStart\", void 0);\n __decorate([\n Property(null)\n ], LimitData.prototype, \"maxEnd\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"startHandleFixed\", void 0);\n __decorate([\n Property(false)\n ], LimitData.prototype, \"endHandleFixed\", void 0);\n return LimitData;\n}(ChildProperty));\nexport { LimitData };\n/**\n * It illustrates the tooltip data in slider.\n */\nvar TooltipData = /** @class */ (function (_super) {\n __extends(TooltipData, _super);\n function TooltipData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipData.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Before')\n ], TooltipData.prototype, \"placement\", void 0);\n __decorate([\n Property('Focus')\n ], TooltipData.prototype, \"showOn\", void 0);\n __decorate([\n Property(false)\n ], TooltipData.prototype, \"isVisible\", void 0);\n __decorate([\n Property(null)\n ], TooltipData.prototype, \"format\", void 0);\n return TooltipData;\n}(ChildProperty));\nexport { TooltipData };\nvar bootstrapTooltipOffset = 6;\nvar bootstrap4TooltipOffset = 3;\nvar classNames = {\n root: 'e-slider',\n rtl: 'e-rtl',\n sliderHiddenInput: 'e-slider-input',\n controlWrapper: 'e-control-wrapper',\n sliderHandle: 'e-handle',\n rangeBar: 'e-range',\n sliderButton: 'e-slider-button',\n firstButton: 'e-first-button',\n secondButton: 'e-second-button',\n scale: 'e-scale',\n tick: 'e-tick',\n large: 'e-large',\n tickValue: 'e-tick-value',\n sliderTooltip: 'e-slider-tooltip',\n sliderHover: 'e-slider-hover',\n sliderFirstHandle: 'e-handle-first',\n sliderSecondHandle: 'e-handle-second',\n sliderDisabled: 'e-disabled',\n sliderContainer: 'e-slider-container',\n horizontalTooltipBefore: 'e-slider-horizontal-before',\n horizontalTooltipAfter: 'e-slider-horizontal-after',\n verticalTooltipBefore: 'e-slider-vertical-before',\n verticalTooltipAfter: 'e-slider-vertical-after',\n materialTooltip: 'e-material-tooltip',\n materialTooltipOpen: 'e-material-tooltip-open',\n materialTooltipActive: 'e-tooltip-active',\n materialSlider: 'e-material-slider',\n sliderTrack: 'e-slider-track',\n sliderHorizantalColor: 'e-slider-horizantal-color',\n sliderVerticalColor: 'e-slider-vertical-color',\n sliderHandleFocused: 'e-handle-focused',\n verticalSlider: 'e-vertical',\n horizontalSlider: 'e-horizontal',\n sliderHandleStart: 'e-handle-start',\n sliderTooltipStart: 'e-material-tooltip-start',\n sliderTabHandle: 'e-tab-handle',\n sliderButtonIcon: 'e-button-icon',\n sliderSmallSize: 'e-small-size',\n sliderTickPosition: 'e-tick-pos',\n sliderFirstTick: 'e-first-tick',\n sliderLastTick: 'e-last-tick',\n sliderButtonClass: 'e-slider-btn',\n sliderTooltipWrapper: 'e-tooltip-wrap',\n sliderTabTrack: 'e-tab-track',\n sliderTabRange: 'e-tab-range',\n sliderActiveHandle: 'e-handle-active',\n sliderMaterialHandle: 'e-material-handle',\n sliderMaterialRange: 'e-material-range',\n sliderMaterialDefault: 'e-material-default',\n materialTooltipShow: 'e-material-tooltip-show',\n materialTooltipHide: 'e-material-tooltip-hide',\n readonly: 'e-read-only',\n limits: 'e-limits',\n limitBarDefault: 'e-limit-bar',\n limitBarFirst: 'e-limit-first',\n limitBarSecond: 'e-limit-second',\n dragHorizontal: 'e-drag-horizontal',\n dragVertical: 'e-drag-vertical'\n};\n/**\n * The Slider component allows the user to select a value or range\n * of values in-between a min and max range, by dragging the handle over the slider bar.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Slider = /** @class */ (function (_super) {\n __extends(Slider, _super);\n function Slider(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.horDir = 'left';\n _this.verDir = 'bottom';\n _this.transition = {\n handle: 'left .4s cubic-bezier(.25, .8, .25, 1), right .4s cubic-bezier(.25, .8, .25, 1), ' +\n 'top .4s cubic-bezier(.25, .8, .25, 1) , bottom .4s cubic-bezier(.25, .8, .25, 1)',\n rangeBar: 'all .4s cubic-bezier(.25, .8, .25, 1)'\n };\n _this.transitionOnMaterialTooltip = {\n handle: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, top 1ms ease-out',\n rangeBar: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, width 1ms ease-out, height 1ms ease-out'\n };\n _this.scaleTransform = 'transform .4s cubic-bezier(.25, .8, .25, 1)';\n _this.customAriaText = null;\n _this.drag = true;\n _this.isDragComplete = false;\n _this.initialTooltip = true;\n return _this;\n }\n Slider.prototype.preRender = function () {\n // eslint-disable-next-line\n var localeText = { incrementTitle: 'Increase', decrementTitle: 'Decrease' };\n this.l10n = new L10n('slider', localeText, this.locale);\n this.isElementFocused = false;\n this.tickElementCollection = [];\n this.tooltipFormatInfo = {};\n this.ticksFormatInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.formChecker();\n };\n Slider.prototype.formChecker = function () {\n var formElement = closest(this.element, 'form');\n if (formElement) {\n this.isForm = true;\n // this condition needs to be checked, if the slider is going to be refreshed by `refresh()`\n // then we need to revert the slider `value` back to `formResetValue` to preserve the initial value\n if (!isNullOrUndefined(this.formResetValue)) {\n this.setProperties({ 'value': this.formResetValue }, true);\n }\n this.formResetValue = this.value;\n if (this.type === 'Range' &&\n (isNullOrUndefined(this.formResetValue) || typeof (this.formResetValue) !== 'object')) {\n this.formResetValue = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n else if (isNullOrUndefined(this.formResetValue)) {\n this.formResetValue = parseFloat(formatUnit(this.min));\n }\n this.formElement = formElement;\n }\n else {\n this.isForm = false;\n }\n };\n Slider.prototype.initCultureFunc = function () {\n this.internationalization = new Internationalization(this.locale);\n };\n Slider.prototype.initCultureInfo = function () {\n this.tooltipFormatInfo.format = (!isNullOrUndefined(this.tooltip.format)) ? this.tooltip.format : null;\n this.ticksFormatInfo.format = (!isNullOrUndefined(this.ticks.format)) ? this.ticks.format : null;\n };\n Slider.prototype.formatString = function (value, formatInfo) {\n var formatValue = null;\n var formatString = null;\n if ((value || value === 0)) {\n formatValue = this.formatNumber(value);\n var numberOfDecimals = this.numberOfDecimals(value);\n formatString = this.internationalization.getNumberFormat(formatInfo)(this.makeRoundNumber(value, numberOfDecimals));\n }\n return { elementVal: formatValue, formatString: formatString };\n };\n Slider.prototype.formatNumber = function (value) {\n var numberOfDecimals = this.numberOfDecimals(value);\n return this.internationalization.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(value);\n };\n Slider.prototype.numberOfDecimals = function (value) {\n var decimalPart = value.toString().split('.')[1];\n var numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n return numberOfDecimals;\n };\n Slider.prototype.makeRoundNumber = function (value, precision) {\n var decimals = precision || 0;\n return Number(value.toFixed(decimals));\n };\n Slider.prototype.fractionalToInteger = function (value) {\n value = (this.numberOfDecimals(value) === 0) ? Number(value).toFixed(this.noOfDecimals) : value;\n var tens = 1;\n for (var i = 0; i < this.noOfDecimals; i++) {\n tens *= 10;\n }\n value = Number((value * tens).toFixed(0));\n return value;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n */\n Slider.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.initRender();\n this.wireEvents();\n this.setZindex();\n this.renderComplete();\n if (this.element.tagName === 'EJS-SLIDER') {\n if (this.getTheme(this.sliderContainer) == 'none') {\n setTimeout(function () {\n _this.refresh();\n }, 0);\n }\n }\n };\n Slider.prototype.initialize = function () {\n addClass([this.element], classNames.root);\n this.setCSSClass();\n };\n Slider.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.sliderContainer.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.sliderContainer.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n Slider.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Slider.prototype.setEnabled = function () {\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.add(classNames.sliderDisabled);\n }\n this.unwireEvents();\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.remove(classNames.sliderDisabled);\n }\n this.wireEvents();\n }\n };\n Slider.prototype.getTheme = function (container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n };\n /**\n * Initialize the rendering\n *\n * @private\n */\n Slider.prototype.initRender = function () {\n this.sliderContainer = this.createElement('div', { className: classNames.sliderContainer + ' ' + classNames.controlWrapper });\n this.element.parentNode.insertBefore(this.sliderContainer, this.element);\n this.sliderContainer.appendChild(this.element);\n this.sliderTrack = this.createElement('div', { className: classNames.sliderTrack });\n this.element.appendChild(this.sliderTrack);\n this.setElementWidth(this.width);\n this.element.tabIndex = -1;\n this.getThemeInitialization();\n this.setHandler();\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setOrientClass();\n this.hiddenInput = (this.createElement('input', {\n attrs: {\n type: 'hidden', value: (isNullOrUndefined(this.value) ? this.min.toString() : this.value.toString()),\n name: this.element.getAttribute('name') || this.element.getAttribute('id') ||\n '_' + (Math.random() * 1000).toFixed(0) + 'slider', class: classNames.sliderHiddenInput\n }\n }));\n this.hiddenInput.tabIndex = -1;\n this.sliderContainer.appendChild(this.hiddenInput);\n if (this.showButtons) {\n this.setButtons();\n }\n this.setEnableRTL();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n else {\n this.value = isNullOrUndefined(this.value) ? parseFloat(formatUnit(this.min.toString())) : this.value;\n }\n this.previousVal = this.type !== 'Range' ? this.checkHandleValue(parseFloat(formatUnit(this.value.toString()))) :\n [this.checkHandleValue(parseFloat(formatUnit(this.value[0].toString()))),\n this.checkHandleValue(parseFloat(formatUnit(this.value[1].toString())))];\n this.previousChanged = this.previousVal;\n if (!isNullOrUndefined(this.element.hasAttribute('name'))) {\n this.element.removeAttribute('name');\n }\n this.setValue();\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n }\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n }\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n if (this.readonly) {\n addClass([this.sliderContainer], [classNames.readonly]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.readonly]);\n }\n };\n Slider.prototype.getThemeInitialization = function () {\n this.isMaterial = this.getTheme(this.sliderContainer) === 'material'\n || this.getTheme(this.sliderContainer) === 'material-dark';\n this.isBootstrap = this.getTheme(this.sliderContainer) === 'bootstrap'\n || this.getTheme(this.sliderContainer) === 'bootstrap-dark';\n this.isBootstrap4 = this.getTheme(this.sliderContainer) === 'bootstrap4';\n this.isTailwind = this.getTheme(this.sliderContainer) === 'tailwind' || this.getTheme(this.sliderContainer) === 'tailwind-dark';\n this.isBootstrap5 = this.getTheme(this.sliderContainer) === 'bootstrap5';\n this.isFluent = this.getTheme(this.sliderContainer) === 'FluentUI';\n this.isMaterialTooltip = this.isMaterial && this.type !== 'Range' && this.tooltip.isVisible;\n };\n Slider.prototype.createRangeBar = function () {\n if (this.type !== 'Default') {\n this.rangeBar = (this.createElement('div', { attrs: { class: classNames.rangeBar } }));\n this.element.appendChild(this.rangeBar);\n if (this.drag && this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n this.rangeBar.classList.add(classNames.dragHorizontal);\n }\n else {\n this.rangeBar.classList.add(classNames.dragVertical);\n }\n }\n }\n };\n Slider.prototype.createLimitBar = function () {\n var firstElementClassName = this.type !== 'Range' ? classNames.limitBarDefault :\n classNames.limitBarFirst;\n firstElementClassName += ' ' + classNames.limits;\n this.limitBarFirst = (this.createElement('div', {\n attrs: { class: firstElementClassName }\n }));\n this.element.appendChild(this.limitBarFirst);\n if (this.type === 'Range') {\n this.limitBarSecond = (this.createElement('div', {\n attrs: {\n class: classNames.limitBarSecond + ' ' + classNames.limits\n }\n }));\n this.element.appendChild(this.limitBarSecond);\n }\n };\n Slider.prototype.setOrientClass = function () {\n if (this.orientation !== 'Vertical') {\n this.sliderContainer.classList.remove(classNames.verticalSlider);\n this.sliderContainer.classList.add(classNames.horizontalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'horizontal');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'horizontal');\n }\n }\n else {\n this.sliderContainer.classList.remove(classNames.horizontalSlider);\n this.sliderContainer.classList.add(classNames.verticalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'vertical');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'vertical');\n }\n }\n };\n Slider.prototype.setAriaAttributes = function (element) {\n var _this = this;\n var min = this.min;\n var max = this.max;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n min = this.customValues[0];\n max = this.customValues[this.customValues.length - 1];\n }\n if (this.type !== 'Range') {\n attributes(element, {\n 'aria-valuemin': min.toString(), 'aria-valuemax': max.toString()\n });\n }\n else {\n var range = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n [[min.toString(), (this.customValues[this.value[1]]).toString()],\n [(this.customValues[this.value[0]]).toString(), max.toString()]] :\n [[min.toString(), this.value[1].toString()], [this.value[0].toString(), max.toString()]];\n range.forEach(function (range, index) {\n var element = index === 0 ? _this.firstHandle : _this.secondHandle;\n if (element) {\n attributes(element, {\n 'aria-valuemin': range[0], 'aria-valuemax': range[1]\n });\n }\n });\n }\n };\n Slider.prototype.createSecondHandle = function () {\n this.secondHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.secondHandle.classList.add(classNames.sliderSecondHandle);\n this.element.appendChild(this.secondHandle);\n };\n Slider.prototype.createFirstHandle = function () {\n this.firstHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.firstHandle.classList.add(classNames.sliderFirstHandle);\n this.element.appendChild(this.firstHandle);\n if (this.isMaterialTooltip) {\n this.materialHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle + ' ' +\n classNames.sliderMaterialHandle\n }\n });\n this.element.appendChild(this.materialHandle);\n }\n };\n Slider.prototype.wireFirstHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.firstHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.firstHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.firstHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.firstHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.firstHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.firstHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.firstHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.wireSecondHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.secondHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.secondHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.secondHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.secondHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.secondHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.secondHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.secondHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.secondHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.handleStart = function () {\n if (this.type !== 'Range') {\n this.firstHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.isMaterialTooltip) {\n this.materialHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.tooltipElement) {\n this.tooltipElement.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderTooltipStart);\n }\n }\n }\n };\n Slider.prototype.transitionEnd = function (e) {\n if (e.propertyName !== 'transform') {\n this.handleStart();\n if (!this.enableAnimation) {\n this.getHandle().style.transition = 'none';\n }\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if (this.isMaterial && this.tooltip.isVisible && this.type === 'Default') {\n this.tooltipElement.style.transition = this.transition.handle;\n }\n this.tooltipToggle(this.getHandle());\n this.closeTooltip();\n }\n };\n Slider.prototype.handleFocusOut = function () {\n if (this.firstHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.firstHandle.classList.remove(classNames.sliderHandleFocused);\n }\n if (this.type === 'Range') {\n if (this.secondHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.secondHandle.classList.remove(classNames.sliderHandleFocused);\n }\n }\n };\n Slider.prototype.handleFocus = function (e) {\n this.focusSliderElement();\n this.sliderBarClick(e);\n if (e.currentTarget === this.firstHandle) {\n this.firstHandle.classList.add(classNames.sliderHandleFocused);\n this.firstHandle.classList.add(classNames.sliderTabHandle);\n }\n else {\n this.secondHandle.classList.add(classNames.sliderHandleFocused);\n this.secondHandle.classList.add(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.handleOver = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover') {\n this.tooltipToggle(e.currentTarget);\n }\n if (this.type === 'Default') {\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.handleLeave = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover' &&\n !e.currentTarget.classList.contains(classNames.sliderHandleFocused) &&\n !e.currentTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeTooltip();\n }\n };\n Slider.prototype.setHandler = function () {\n if (this.min > this.max) {\n this.min = this.max;\n }\n this.createFirstHandle();\n if (this.type === 'Range') {\n this.createSecondHandle();\n }\n };\n Slider.prototype.setEnableRTL = function () {\n this.enableRtl && this.orientation !== 'Vertical' ? addClass([this.sliderContainer], classNames.rtl) :\n removeClass([this.sliderContainer], classNames.rtl);\n var preDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (this.enableRtl) {\n this.horDir = 'right';\n this.verDir = 'bottom';\n }\n else {\n this.horDir = 'left';\n this.verDir = 'bottom';\n }\n var currDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (preDir !== currDir) {\n if (this.orientation === 'Horizontal') {\n setStyleAttribute(this.firstHandle, { 'right': '', 'left': 'auto' });\n if (this.type === 'Range') {\n setStyleAttribute(this.secondHandle, { 'top': '', 'left': 'auto' });\n }\n }\n }\n this.setBarColor();\n };\n Slider.prototype.tooltipValue = function () {\n var _this = this;\n var text;\n var args = {\n value: this.value,\n text: ''\n };\n if (this.initialTooltip) {\n this.initialTooltip = false;\n this.setTooltipContent();\n args.text = text = this.tooltipObj.content;\n this.trigger('tooltipChange', args, function (observedArgs) {\n _this.addTooltipClass(observedArgs.text);\n if (text !== observedArgs.text) {\n _this.customAriaText = observedArgs.text;\n _this.tooltipObj.content = observedArgs.text;\n _this.setAriaAttrValue(_this.firstHandle);\n if (_this.type === 'Range') {\n _this.setAriaAttrValue(_this.secondHandle);\n }\n }\n });\n if (this.isMaterialTooltip) {\n this.setPreviousVal('change', this.value);\n }\n }\n };\n Slider.prototype.setTooltipContent = function () {\n var content;\n content = this.formatContent(this.tooltipFormatInfo, false);\n this.tooltipObj.content = content;\n };\n Slider.prototype.formatContent = function (formatInfo, ariaContent) {\n var content = '';\n var handle1 = this.handleVal1;\n var handle2 = this.handleVal2;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n handle1 = this.customValues[this.handleVal1];\n handle2 = this.customValues[this.handleVal2];\n }\n if (!ariaContent) {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle2, formatInfo)\n .formatString + ' - ' + this.formatString(handle1, formatInfo).formatString) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle1, formatInfo)\n .formatString + ' - ' + this.formatString(handle2, formatInfo).formatString) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(formatInfo.format)) ?\n this.formatString(handle1, formatInfo).formatString : handle1.toString();\n }\n }\n return content;\n }\n else {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle2, formatInfo).elementVal + ' - ' +\n this.formatString(handle1, formatInfo).elementVal) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle1, formatInfo).elementVal + ' - ' +\n this.formatString(handle2, formatInfo).elementVal) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n this.formatString(handle1, formatInfo).elementVal : handle1.toString();\n }\n }\n return content;\n }\n };\n Slider.prototype.addTooltipClass = function (content) {\n if (this.isMaterialTooltip) {\n var count = content.toString().length;\n if (!this.tooltipElement) {\n var cssClass = count > 4 ? classNames.sliderMaterialRange : classNames.sliderMaterialDefault;\n this.tooltipObj.cssClass = classNames.sliderTooltip + ' ' + cssClass;\n }\n else {\n var cssClass = count > 4 ?\n { oldCss: classNames.sliderMaterialDefault, newCss: classNames.sliderMaterialRange } :\n { oldCss: classNames.sliderMaterialRange, newCss: classNames.sliderMaterialDefault };\n this.tooltipElement.classList.remove(cssClass.oldCss);\n if (!this.tooltipElement.classList.contains(cssClass.newCss)) {\n this.tooltipElement.classList.add(cssClass.newCss);\n this.tooltipElement.style.transform = count > 4 ? 'scale(1)' :\n this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n }\n };\n Slider.prototype.tooltipPlacement = function () {\n return this.orientation === 'Horizontal' ? (this.tooltip.placement === 'Before' ? 'TopCenter' : 'BottomCenter') :\n (this.tooltip.placement === 'Before' ? 'LeftCenter' : 'RightCenter');\n };\n Slider.prototype.tooltipBeforeOpen = function (args) {\n this.tooltipElement = args.element;\n if (this.tooltip.cssClass) {\n addClass([this.tooltipElement], this.tooltip.cssClass.split(' ').filter(function (css) { return css; }));\n }\n args.target.removeAttribute('aria-describedby');\n if (this.isMaterialTooltip) {\n this.tooltipElement.firstElementChild.classList.add(classNames.materialTooltipHide);\n this.handleStart();\n this.setTooltipTransform();\n }\n };\n Slider.prototype.tooltipCollision = function (position) {\n if (this.isBootstrap || this.isBootstrap4 || (this.isMaterial && !this.isMaterialTooltip)) {\n var tooltipOffsetValue = this.isBootstrap4 ? bootstrap4TooltipOffset : bootstrapTooltipOffset;\n switch (position) {\n case 'TopCenter':\n this.tooltipObj.setProperties({ 'offsetY': -(tooltipOffsetValue) }, false);\n break;\n case 'BottomCenter':\n this.tooltipObj.setProperties({ 'offsetY': tooltipOffsetValue }, false);\n break;\n case 'LeftCenter':\n this.tooltipObj.setProperties({ 'offsetX': -(tooltipOffsetValue) }, false);\n break;\n case 'RightCenter':\n this.tooltipObj.setProperties({ 'offsetX': tooltipOffsetValue }, false);\n break;\n }\n }\n };\n Slider.prototype.materialTooltipEventCallBack = function (event) {\n this.sliderBarClick(event);\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.wireMaterialTooltipEvent = function (destroy) {\n if (this.isMaterialTooltip) {\n if (!destroy) {\n EventHandler.add(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack, this);\n }\n else {\n EventHandler.remove(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack);\n }\n }\n };\n Slider.prototype.tooltipPositionCalculation = function (position) {\n var cssClass;\n switch (position) {\n case 'TopCenter':\n cssClass = classNames.horizontalTooltipBefore;\n break;\n case 'BottomCenter':\n cssClass = classNames.horizontalTooltipAfter;\n break;\n case 'LeftCenter':\n cssClass = classNames.verticalTooltipBefore;\n break;\n case 'RightCenter':\n cssClass = classNames.verticalTooltipAfter;\n break;\n }\n return cssClass;\n };\n Slider.prototype.getTooltipTransformProperties = function (className) {\n var transformProperties;\n if (this.tooltipElement) {\n var position = this.orientation === 'Horizontal' ?\n ((this.tooltipElement.clientHeight + 14) - (this.tooltipElement.clientHeight / 2)) :\n ((this.tooltipElement.clientWidth + 14) - (this.tooltipElement.clientWidth / 2));\n transformProperties = this.orientation === 'Horizontal' ?\n (className === classNames.horizontalTooltipBefore ? { rotate: 'rotate(45deg)', translate: \"translateY(\" + position + \"px)\" } :\n { rotate: 'rotate(225deg)', translate: \"translateY(\" + -(position) + \"px)\" }) :\n (className === classNames.verticalTooltipBefore ? { rotate: 'rotate(-45deg)', translate: \"translateX(\" + position + \"px)\" } :\n { rotate: 'rotate(-225deg)', translate: \"translateX(\" + (-position) + \"px)\" });\n }\n return transformProperties;\n };\n Slider.prototype.openMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n this.refreshTooltip(this.firstHandle);\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n tooltipContentElement.classList.remove(classNames.materialTooltipHide);\n tooltipContentElement.classList.add(classNames.materialTooltipShow);\n this.firstHandle.style.cursor = 'default';\n this.tooltipElement.style.transition = this.scaleTransform;\n this.tooltipElement.classList.add(classNames.materialTooltipOpen);\n this.materialHandle.style.transform = 'scale(0)';\n if (tooltipContentElement.innerText.length > 4) {\n this.tooltipElement.style.transform = 'scale(1)';\n }\n else {\n this.tooltipElement.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n if (this.type === 'Default') {\n setTimeout(function () { _this.tooltipElement.style.transition = _this.transition.handle; }, 2500);\n }\n else {\n setTimeout(function () { _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n }\n };\n Slider.prototype.closeMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n this.tooltipElement.style.transition = this.scaleTransform;\n tooltipContentElement.classList.remove(classNames.materialTooltipShow);\n tooltipContentElement.classList.add(classNames.materialTooltipHide);\n this.firstHandle.style.cursor = '-webkit-grab';\n this.firstHandle.style.cursor = 'grab';\n if (this.materialHandle) {\n this.materialHandle.style.transform = 'scale(1)';\n }\n this.tooltipElement.classList.remove(classNames.materialTooltipOpen);\n this.setTooltipTransform();\n this.tooltipTarget = undefined;\n setTimeout(function () { _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n };\n Slider.prototype.checkTooltipPosition = function (args) {\n var tooltipClass = this.tooltipPositionCalculation(args.collidedPosition);\n if (this.tooltipCollidedPosition === undefined ||\n this.tooltipCollidedPosition !== args.collidedPosition || !args.element.classList.contains(tooltipClass)) {\n if (this.isMaterialTooltip) {\n if (tooltipClass !== undefined) {\n args.element.classList.remove(this.previousTooltipClass);\n args.element.classList.add(tooltipClass);\n this.previousTooltipClass = tooltipClass;\n }\n if (args.element.style.transform && args.element.classList.contains(classNames.materialTooltipOpen) &&\n args.element.firstElementChild.innerText.length <= 4) {\n args.element.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n this.tooltipCollidedPosition = args.collidedPosition;\n }\n if (this.isMaterialTooltip && this.tooltipElement && this.tooltipElement.style.transform.indexOf('translate') !== -1) {\n this.setTooltipTransform();\n }\n };\n Slider.prototype.setTooltipTransform = function () {\n var transformProperties = this.getTooltipTransformProperties(this.previousTooltipClass);\n if (this.tooltipElement.firstElementChild.innerText.length > 4) {\n this.tooltipElement.style.transform = transformProperties.translate + \" scale(0.01)\";\n }\n else {\n this.tooltipElement.style.transform = transformProperties.translate + \" \" + transformProperties.rotate + \" scale(0.01)\";\n }\n };\n Slider.prototype.renderTooltip = function () {\n this.tooltipObj = new Tooltip({\n showTipPointer: this.isBootstrap || this.isMaterial || this.isBootstrap4 || this.isTailwind || this.isBootstrap5 || this.isFluent,\n cssClass: classNames.sliderTooltip,\n height: this.isMaterial ? 30 : 'auto',\n animation: { open: { effect: 'None' }, close: { effect: 'FadeOut', duration: 500 } },\n opensOn: 'Custom',\n beforeOpen: this.tooltipBeforeOpen.bind(this),\n beforeCollision: this.checkTooltipPosition.bind(this),\n beforeClose: this.tooltipBeforeClose.bind(this),\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.firstHandle);\n this.initializeTooltipProps();\n };\n Slider.prototype.initializeTooltipProps = function () {\n var tooltipShowOn = (this.tooltip.showOn === 'Auto' ? 'Hover' : this.tooltip.showOn);\n this.setProperties({ tooltip: { showOn: tooltipShowOn } }, true);\n this.tooltipObj.position = this.tooltipPlacement();\n this.tooltipCollision(this.tooltipObj.position);\n [this.firstHandle, this.rangeBar, this.secondHandle].forEach(function (handle) {\n if (!isNullOrUndefined(handle)) {\n handle.style.transition = 'none';\n }\n });\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n this.tooltipValue();\n this.tooltipObj.animation.close.effect = 'None';\n this.tooltipObj.open(this.firstHandle);\n }\n };\n Slider.prototype.tooltipBeforeClose = function () {\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n };\n Slider.prototype.setButtons = function () {\n this.firstBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.firstButton });\n this.firstBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.firstBtn.querySelector('span').classList.add('e-icons');\n }\n this.firstBtn.tabIndex = -1;\n this.secondBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.secondButton });\n this.secondBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.secondBtn.querySelector('span').classList.add('e-icons');\n }\n this.secondBtn.tabIndex = -1;\n this.sliderContainer.classList.add(classNames.sliderButtonClass);\n this.sliderContainer.appendChild(this.firstBtn);\n this.sliderContainer.appendChild(this.secondBtn);\n this.sliderContainer.appendChild(this.element);\n this.buttonTitle();\n };\n Slider.prototype.buttonTitle = function () {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n this.l10n.setLocale(this.locale);\n var decrementTitle = this.l10n.getConstant('decrementTitle');\n var incrementTitle = this.l10n.getConstant('incrementTitle');\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': decrementTitle, title: decrementTitle });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': incrementTitle, title: incrementTitle });\n };\n Slider.prototype.buttonFocusOut = function () {\n if (this.isMaterial) {\n this.getHandle().classList.remove('e-large-thumb-size');\n }\n };\n Slider.prototype.repeatButton = function (args) {\n var hVal = this.handleValueUpdate();\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var value;\n if (args.target.parentElement.classList.contains(classNames.firstButton)\n || args.target.classList.contains(classNames.firstButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if (args.target.parentElement.classList.contains(classNames.secondButton)\n || (args.target.classList.contains(classNames.secondButton))) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n if (value >= this.min && value <= this.max) {\n this.changeHandleValue(value);\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.repeatHandlerMouse = function (args) {\n args.preventDefault();\n if (args.type === ('mousedown') || args.type === ('touchstart')) {\n this.buttonClick(args);\n this.repeatInterval = setInterval(this.repeatButton.bind(this), 180, args);\n }\n };\n Slider.prototype.materialChange = function () {\n if (!this.getHandle().classList.contains('e-large-thumb-size')) {\n this.getHandle().classList.add('e-large-thumb-size');\n }\n };\n Slider.prototype.focusHandle = function () {\n if (!this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.getHandle().classList.add(classNames.sliderTabHandle);\n }\n };\n Slider.prototype.repeatHandlerUp = function (e) {\n this.changeEvent('changed', e);\n this.closeTooltip();\n clearInterval(this.repeatInterval);\n this.getHandle().focus();\n };\n Slider.prototype.customTickCounter = function (bigNum) {\n var tickCount = 4;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n if (bigNum > 4) {\n tickCount = 3;\n }\n if (bigNum > 7) {\n tickCount = 2;\n }\n if (bigNum > 14) {\n tickCount = 1;\n }\n if (bigNum > 28) {\n tickCount = 0;\n }\n }\n return tickCount;\n };\n // tslint:disable-next-line:max-func-body-length\n Slider.prototype.renderScale = function () {\n var liElementPosition = 0;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n var spanText;\n this.noOfDecimals = this.numberOfDecimals(this.step);\n this.ul = this.createElement('ul', {\n className: classNames.scale + ' ' + 'e-' + orien + '-scale ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n this.ul.style.zIndex = '-1';\n if (Browser.isAndroid && orien === 'h') {\n this.ul.classList.add(classNames.sliderTickPosition);\n }\n var smallStep = this.ticks.smallStep;\n if (!this.ticks.showSmallTicks) {\n this.ticks.largeStep > 0 ? (smallStep = this.ticks.largeStep) :\n (smallStep = (parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n }\n else if (smallStep <= 0) {\n smallStep = parseFloat(formatUnit(this.step));\n }\n var min = this.fractionalToInteger(this.min);\n var max = this.fractionalToInteger(this.max);\n var steps = this.fractionalToInteger(smallStep);\n var bigNum = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 && this.customValues.length - 1;\n var customStep = this.customTickCounter(bigNum);\n var count = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n (bigNum * customStep) + bigNum : Math.abs((max - min) / steps);\n this.element.appendChild(this.ul);\n var li;\n var start = parseFloat(this.min.toString());\n if (orien === 'v') {\n start = parseFloat(this.max.toString());\n }\n var left = 0;\n var islargeTick;\n var tickWidth = 100 / count;\n if (tickWidth === Infinity) {\n tickWidth = 5;\n }\n for (var i = 0, y = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n this.customValues.length - 1 : 0, k = 0; i <= count; i++) {\n li = (this.createElement('li', {\n attrs: {\n class: classNames.tick, role: 'presentation', tabIndex: '-1',\n 'aria-hidden': 'true'\n }\n }));\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n islargeTick = i % (customStep + 1) === 0;\n if (islargeTick) {\n if (orien === 'h') {\n start = this.customValues[k];\n k++;\n }\n else {\n start = this.customValues[y];\n y--;\n }\n li.setAttribute('title', start.toString());\n }\n }\n else {\n li.setAttribute('title', start.toString());\n if (this.numberOfDecimals(this.max) === 0 && this.numberOfDecimals(this.min) === 0 &&\n this.numberOfDecimals(this.step) === 0) {\n if (orien === 'h') {\n islargeTick = ((start - parseFloat(this.min.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(start - parseFloat(this.max.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n }\n else {\n var largestep = this.fractionalToInteger(this.ticks.largeStep);\n var startValue = this.fractionalToInteger(start);\n if (orien === 'h') {\n islargeTick = ((startValue - min) % largestep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(startValue - parseFloat(max.toString())) % largestep === 0) ? true : false;\n }\n }\n }\n if (islargeTick) {\n li.classList.add(classNames.large);\n }\n (orien === 'h') ? (li.style.width = tickWidth + '%') : (li.style.height = tickWidth + '%');\n var repeat = islargeTick ? (this.ticks.placement === 'Both' ? 2 : 1) : 0;\n if (islargeTick) {\n for (var j = 0; j < repeat; j++) {\n this.createTick(li, start, tickWidth);\n }\n }\n else if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start);\n }\n this.ul.appendChild(li);\n this.tickElementCollection.push(li);\n var decimalPoints = void 0;\n if (isNullOrUndefined(this.customValues)) {\n if (this.numberOfDecimals(smallStep) > this.numberOfDecimals(start)) {\n decimalPoints = this.numberOfDecimals(smallStep);\n }\n else {\n decimalPoints = this.numberOfDecimals(start);\n }\n if (orien === 'h') {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n start = this.makeRoundNumber(start - smallStep, decimalPoints);\n }\n left = this.makeRoundNumber(left + smallStep, decimalPoints);\n }\n }\n this.ticksAlignment(orien, tickWidth);\n };\n Slider.prototype.ticksAlignment = function (orien, tickWidth, triggerEvent) {\n if (triggerEvent === void 0) { triggerEvent = true; }\n this.firstChild = this.ul.firstElementChild;\n this.lastChild = this.ul.lastElementChild;\n this.firstChild.classList.add(classNames.sliderFirstTick);\n this.lastChild.classList.add(classNames.sliderLastTick);\n this.sliderContainer.classList.add(classNames.scale + '-' + this.ticks.placement.toLowerCase());\n if (orien === 'h') {\n this.firstChild.style.width = tickWidth / 2 + '%';\n this.lastChild.style.width = tickWidth / 2 + '%';\n }\n else {\n this.firstChild.style.height = tickWidth / 2 + '%';\n this.lastChild.style.height = tickWidth / 2 + '%';\n }\n var eventArgs = { ticksWrapper: this.ul, tickElements: this.tickElementCollection };\n if (triggerEvent) {\n this.trigger('renderedTicks', eventArgs);\n }\n this.scaleAlignment();\n };\n Slider.prototype.createTick = function (li, start, tickWidth) {\n var span = this.createElement('span', {\n className: classNames.tickValue + ' ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n li.appendChild(span);\n if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start, span, tickWidth);\n }\n else {\n if (this.enableHtmlSanitizer) {\n span.innerHTML = SanitizeHtmlHelper.sanitize(start.toString());\n }\n else {\n span.innerHTML = start.toString();\n }\n }\n };\n Slider.prototype.formatTicksValue = function (li, start, spanElement, tickWidth) {\n var _this = this;\n var tickText = this.formatNumber(start);\n var text = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ?\n this.formatString(start, this.ticksFormatInfo).formatString : tickText;\n var eventArgs = { value: start, text: text, tickElement: li };\n this.trigger('renderingTicks', eventArgs, function (observedArgs) {\n li.setAttribute('title', observedArgs.text.toString());\n if (spanElement) {\n if (_this.enableHtmlSanitizer) {\n spanElement.innerHTML = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n spanElement.innerHTML = observedArgs.text.toString();\n }\n }\n });\n };\n Slider.prototype.scaleAlignment = function () {\n this.tickValuePosition();\n var smallTick = 12;\n var largeTick = 20;\n var half = largeTick / 2;\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n if (this.orientation === 'Vertical') {\n (this.element.getBoundingClientRect().width <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n else {\n (this.element.getBoundingClientRect().height <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n };\n Slider.prototype.tickValuePosition = function () {\n this.firstChild = this.element.querySelector('ul').children[0];\n var first = this.firstChild.getBoundingClientRect();\n var firstChild;\n var otherChild;\n var smallStep = this.ticks.smallStep;\n var count = Math.abs((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min)))) / smallStep;\n if (this.firstChild.children.length > 0) {\n firstChild = this.firstChild.children[0].getBoundingClientRect();\n }\n var tickElements = [this.sliderContainer.querySelectorAll('.' + classNames.tick + '.' +\n classNames.large + ' .' + classNames.tickValue)];\n var other;\n if (this.ticks.placement === 'Both') {\n other = [].slice.call(tickElements[0], 2);\n }\n else {\n other = [].slice.call(tickElements[0], 1);\n }\n var tickWidth = this.orientation === 'Vertical' ?\n (first.height * 2) : (first.width * 2);\n for (var i = 0; i < this.firstChild.children.length; i++) {\n if (this.orientation === 'Vertical') {\n this.firstChild.children[i].style.top = -(firstChild.height / 2) + 'px';\n }\n else {\n if (!this.enableRtl) {\n this.firstChild.children[i].style.left = -(firstChild.width / 2) + 'px';\n }\n else {\n this.firstChild.children[i].style.left = (tickWidth -\n this.firstChild.children[i].getBoundingClientRect().width) / 2 + 'px';\n }\n }\n }\n for (var i = 0; i < other.length; i++) {\n otherChild = other[i].getBoundingClientRect();\n if (this.orientation === 'Vertical') {\n setStyleAttribute(other[i], { top: (tickWidth - otherChild.height) / 2 + 'px' });\n }\n else {\n setStyleAttribute(other[i], { left: (tickWidth - otherChild.width) / 2 + 'px' });\n }\n }\n if (this.enableRtl && this.lastChild.children.length && count !== 0) {\n this.lastChild.children[0].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n if (this.ticks.placement === 'Both') {\n this.lastChild.children[1].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n }\n }\n if (count === 0) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.left = this.firstHandle.style.left;\n }\n else {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.right = this.firstHandle.style.right;\n this.firstChild.children[0].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n if (this.ticks.placement === 'Both') {\n this.firstChild.children[1].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n }\n }\n }\n if (this.orientation === 'Vertical') {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n }\n }\n };\n Slider.prototype.setAriaAttrValue = function (element) {\n var ariaValueText;\n var isTickFormatted = ((!isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format))) ? true : false;\n var text = !isTickFormatted ?\n this.formatContent(this.ticksFormatInfo, false) : this.formatContent(this.tooltipFormatInfo, false);\n var valuenow = isTickFormatted ? this.formatContent(this.ticksFormatInfo, true) :\n this.formatContent(this.tooltipFormatInfo, true);\n text = (!this.customAriaText) ? (text) : (this.customAriaText);\n if (text.split(' - ').length === 2) {\n ariaValueText = text.split(' - ');\n }\n else {\n ariaValueText = [text, text];\n }\n this.setAriaAttributes(element);\n if (this.type !== 'Range') {\n attributes(element, { 'aria-valuenow': valuenow, 'aria-valuetext': text });\n }\n else {\n // eslint-disable-next-line\n (!this.enableRtl) ? ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] })) :\n ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }));\n }\n };\n Slider.prototype.handleValueUpdate = function () {\n var hVal;\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n hVal = this.handleVal1;\n }\n else {\n hVal = this.handleVal2;\n }\n }\n else {\n hVal = this.handleVal1;\n }\n return hVal;\n };\n Slider.prototype.getLimitCorrectedValues = function (value) {\n if (this.type === 'MinRange' || this.type === 'Default') {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n if (this.activeHandle === 1) {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n value = (this.getLimitValueAndPosition(value, this.limits.maxStart, this.limits.maxEnd))[0];\n }\n }\n return value;\n };\n Slider.prototype.focusSliderElement = function () {\n if (!this.isElementFocused) {\n this.element.focus();\n this.isElementFocused = true;\n }\n };\n Slider.prototype.buttonClick = function (args) {\n this.focusSliderElement();\n var value;\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var hVal = this.handleValueUpdate();\n if ((args.keyCode === 40) || (args.keyCode === 37)\n || args.currentTarget.classList.contains(classNames.firstButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if ((args.keyCode === 38) || (args.keyCode === 39) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n else if ((args.keyCode === 33\n || args.currentTarget.classList.contains(classNames.firstButton))) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true));\n }\n else if ((args.keyCode === 34) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false));\n }\n else if ((args.keyCode === 36)) {\n value = parseFloat(this.min.toString());\n }\n else if ((args.keyCode === 35)) {\n value = parseFloat(this.max.toString());\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n this.changeHandleValue(value);\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n this.getHandle().focus();\n this.focusHandle();\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.add(this.firstBtn, 'mouseup touchend', this.buttonUp, this);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.add(this.secondBtn, 'mouseup touchend', this.buttonUp, this);\n }\n };\n Slider.prototype.tooltipToggle = function (target) {\n if (this.isMaterialTooltip) {\n // eslint-disable-next-line\n !this.tooltipElement.classList.contains(classNames.materialTooltipOpen) ?\n this.openMaterialTooltip() : this.refreshTooltip(this.firstHandle);\n }\n else {\n // eslint-disable-next-line\n !this.tooltipElement ? this.openTooltip(target) : this.refreshTooltip(target);\n }\n };\n Slider.prototype.buttonUp = function (args) {\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.remove(this.firstBtn, 'mouseup touchend', this.buttonUp);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.remove(this.secondBtn, 'mouseup touchend', this.buttonUp);\n }\n };\n Slider.prototype.setRangeBar = function () {\n if (this.orientation === 'Horizontal') {\n if (this.type === 'MinRange') {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n this.rangeBar.style.bottom = this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n };\n Slider.prototype.checkValidValueAndPos = function (value) {\n value = this.checkHandleValue(value);\n value = this.checkHandlePosition(value);\n return value;\n };\n Slider.prototype.setLimitBarPositions = function (fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarFirst.style.left = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n else {\n this.limitBarFirst.style.right = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n }\n else {\n this.limitBarFirst.style.bottom = fromMinPostion + 'px';\n this.limitBarFirst.style.height = (fromMaxpostion - fromMinPostion) + 'px';\n }\n if (this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarSecond.style.left = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n else {\n this.limitBarSecond.style.right = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n else {\n this.limitBarSecond.style.bottom = toMinPostion + 'px';\n this.limitBarSecond.style.height = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n };\n Slider.prototype.setLimitBar = function () {\n if (this.type === 'Default' || this.type === 'MinRange') {\n var fromPosition = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromPosition = this.checkValidValueAndPos(fromPosition);\n var toPosition = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n toPosition = this.checkValidValueAndPos(toPosition);\n this.setLimitBarPositions(fromPosition, toPosition);\n }\n else if (this.type === 'Range') {\n var fromMinPostion = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMinPostion = this.checkValidValueAndPos(fromMinPostion);\n var fromMaxpostion = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMaxpostion = this.checkValidValueAndPos(fromMaxpostion);\n var toMinPostion = (this.getLimitValueAndPosition(this.limits.maxStart, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMinPostion = this.checkValidValueAndPos(toMinPostion);\n var toMaxpostion = (this.getLimitValueAndPosition(this.limits.maxEnd, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMaxpostion = this.checkValidValueAndPos(toMaxpostion);\n this.setLimitBarPositions(fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion);\n }\n };\n Slider.prototype.getLimitValueAndPosition = function (currentValue, minValue, maxValue, limitBar) {\n if (isNullOrUndefined(minValue)) {\n minValue = this.min;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = minValue;\n }\n }\n if (isNullOrUndefined(maxValue)) {\n maxValue = this.max;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = maxValue;\n }\n }\n if (currentValue < minValue) {\n currentValue = minValue;\n }\n if (currentValue > maxValue) {\n currentValue = maxValue;\n }\n return [currentValue, this.checkHandlePosition(currentValue)];\n };\n Slider.prototype.setValue = function () {\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n this.min = 0;\n this.max = this.customValues.length - 1;\n this.setBarColor();\n }\n this.setAriaAttributes(this.firstHandle);\n this.handleVal1 = isNullOrUndefined(this.value) ? this.checkHandleValue(parseFloat(this.min.toString())) :\n this.checkHandleValue(parseFloat(this.value.toString()));\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.preHandlePos1 = this.handlePos1;\n // eslint-disable-next-line\n isNullOrUndefined(this.activeHandle) ? (this.type === 'Range' ? this.activeHandle = 2 : this.activeHandle = 1) :\n // eslint-disable-next-line no-self-assign\n this.activeHandle = this.activeHandle;\n if (this.type === 'Default' || this.type === 'MinRange') {\n if (this.limits.enabled) {\n var values = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values[0];\n this.handlePos1 = values[1];\n this.preHandlePos1 = this.handlePos1;\n }\n this.setHandlePosition(null);\n this.handleStart();\n this.value = this.handleVal1;\n this.setAriaAttrValue(this.firstHandle);\n this.changeEvent('changed', null);\n }\n else {\n this.validateRangeValue();\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n };\n Slider.prototype.rangeValueUpdate = function () {\n if (this.value === null || typeof (this.value) !== 'object') {\n this.value = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n };\n Slider.prototype.validateRangeValue = function () {\n this.rangeValueUpdate();\n this.setRangeValue();\n };\n Slider.prototype.modifyZindex = function () {\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.style.zIndex = (this.zIndex + 4) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 3) + '';\n }\n else {\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n }\n else if (this.isMaterialTooltip && this.tooltipElement) {\n this.tooltipElement.style.zIndex = getZindexPartial(this.element) + '';\n }\n };\n Slider.prototype.setHandlePosition = function (event) {\n var _this = this;\n var handle;\n var pos = (this.activeHandle === 1) ? this.handlePos1 : this.handlePos2;\n if (this.isMaterialTooltip) {\n handle = [this.firstHandle, this.materialHandle];\n }\n else {\n handle = [this.getHandle()];\n }\n this.handleStart();\n handle.forEach(function (handle) {\n if (_this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n _this.enableRtl ? (handle.style.right =\n pos + \"px\") : (handle.style.left = pos + \"px\");\n }\n else {\n handle.style.bottom = pos + \"px\";\n }\n });\n this.changeEvent('change', event);\n };\n Slider.prototype.getHandle = function () {\n return (this.activeHandle === 1) ? this.firstHandle : this.secondHandle;\n };\n Slider.prototype.setRangeValue = function () {\n this.updateRangeValue();\n this.activeHandle = 1;\n this.setHandlePosition(null);\n this.activeHandle = 2;\n this.setHandlePosition(null);\n this.activeHandle = 1;\n };\n Slider.prototype.changeEvent = function (eventName, e) {\n var previous = eventName === 'change' ? this.previousVal : this.previousChanged;\n if (this.type !== 'Range') {\n this.setProperties({ 'value': this.handleVal1 }, true);\n if (previous !== this.value && (!this.isMaterialTooltip || !this.initialTooltip)) {\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.firstHandle);\n }\n else {\n var value = this.value = [this.handleVal1, this.handleVal2];\n this.setProperties({ 'value': value }, true);\n if (previous.length === this.value.length\n && this.value[0] !== previous[0] || this.value[1] !== previous[1]) {\n this.initialTooltip = false;\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.getHandle());\n }\n this.hiddenInput.value = this.value.toString();\n };\n Slider.prototype.changeEventArgs = function (eventName, e) {\n var eventArgs;\n if (this.tooltip.isVisible && this.tooltipObj && this.initialTooltip) {\n this.tooltipValue();\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: this.tooltipObj.content, isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n else {\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: isNullOrUndefined(this.ticksFormatInfo.format) ? this.value.toString() :\n (this.type !== 'Range' ? this.formatString(this.value, this.ticksFormatInfo).formatString :\n (this.formatString(this.value[0], this.ticksFormatInfo).formatString + ' - ' +\n this.formatString(this.value[1], this.ticksFormatInfo).formatString)),\n isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n return eventArgs;\n };\n Slider.prototype.setPreviousVal = function (eventName, value) {\n if (eventName === 'change') {\n this.previousVal = value;\n }\n else {\n this.previousChanged = value;\n }\n };\n Slider.prototype.updateRangeValue = function () {\n var values = this.value.toString().split(',').map(Number);\n if ((this.enableRtl && this.orientation !== 'Vertical') || this.rtl) {\n this.value = [values[1], values[0]];\n }\n else {\n this.value = [values[0], values[1]];\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n this.handleVal1 = this.checkHandleValue(this.value[1]);\n this.handleVal2 = this.checkHandleValue(this.value[0]);\n }\n else {\n this.handleVal1 = this.checkHandleValue(this.value[0]);\n this.handleVal2 = this.checkHandleValue(this.value[1]);\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n this.preHandlePos1 = this.handlePos1;\n this.preHandlePos2 = this.handlePos2;\n if (this.limits.enabled) {\n this.activeHandle = 1;\n var values_1 = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values_1[0];\n this.handlePos1 = values_1[1];\n this.preHandlePos1 = this.handlePos1;\n this.activeHandle = 2;\n values_1 = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = values_1[0];\n this.handlePos2 = values_1[1];\n this.preHandlePos2 = this.handlePos2;\n }\n };\n Slider.prototype.checkHandlePosition = function (value) {\n var pos;\n value = (100 *\n (value - (parseFloat(formatUnit(this.min))))) / ((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (value / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (value / 100);\n }\n if (((parseFloat(formatUnit(this.max))) === (parseFloat(formatUnit(this.min))))) {\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width;\n }\n else {\n pos = this.element.getBoundingClientRect().height;\n }\n }\n return pos;\n };\n Slider.prototype.checkHandleValue = function (value) {\n if (this.min > this.max) {\n this.min = this.max;\n }\n if (this.min === this.max) {\n return (parseFloat(formatUnit(this.max)));\n }\n var handle = this.tempStartEnd();\n if (value < handle.start) {\n value = handle.start;\n }\n else if (value > handle.end) {\n value = handle.end;\n }\n return value;\n };\n /**\n * It is used to reposition slider.\n *\n * @returns void\n */\n Slider.prototype.reposition = function () {\n var _this = this;\n this.firstHandle.style.transition = 'none';\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if (this.type === 'Range') {\n this.secondHandle.style.transition = 'none';\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.handleVal2) {\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n }\n if (this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n this.enableRtl ? this.firstHandle.style.right =\n this.handlePos1 + \"px\" : this.firstHandle.style.left = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n // eslint-disable-next-line\n this.enableRtl ? this.materialHandle.style.right =\n this.handlePos1 + \"px\" : this.materialHandle.style.left = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n // eslint-disable-next-line\n this.enableRtl ? this.secondHandle.style.right =\n this.handlePos2 + \"px\" : this.secondHandle.style.left = this.handlePos2 + \"px\";\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n this.firstHandle.style.bottom = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n this.materialHandle.style.bottom = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n this.secondHandle.style.bottom = this.handlePos2 + \"px\";\n this.rangeBar.style.bottom = this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None' && this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n this.handleStart();\n if (!this.tooltip.isVisible) {\n setTimeout(function () {\n _this.firstHandle.style.transition = _this.scaleTransform;\n if (_this.type === 'Range') {\n _this.secondHandle.style.transition = _this.scaleTransform;\n }\n });\n }\n this.refreshTooltip(this.tooltipTarget);\n this.setBarColor();\n };\n Slider.prototype.changeHandleValue = function (value) {\n var position = null;\n if (this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n this.handleVal1 = this.checkHandleValue(value);\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.type === 'Range' && this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.handlePos1 !== this.preHandlePos1) {\n position = this.preHandlePos1 = this.handlePos1;\n }\n }\n this.modifyZindex();\n }\n else {\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n this.handleVal2 = this.checkHandleValue(value);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.type === 'Range' && this.handlePos2 < this.handlePos1) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n if (this.handlePos2 !== this.preHandlePos2) {\n position = this.preHandlePos2 = this.handlePos2;\n }\n }\n this.modifyZindex();\n }\n if (position !== null) {\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n this.setHandlePosition(null);\n }\n };\n // eslint-disable-next-line\n Slider.prototype.tempStartEnd = function () {\n if (this.min > this.max) {\n return {\n start: this.max,\n end: this.min\n };\n }\n else {\n return {\n start: this.min,\n end: this.max\n };\n }\n };\n // eslint-disable-next-line\n Slider.prototype.xyToPosition = function (position) {\n var pos;\n if (this.min === this.max) {\n return 100;\n }\n if (this.orientation === 'Horizontal') {\n var left = position.x - this.element.getBoundingClientRect().left;\n var num = this.element.offsetWidth / 100;\n this.val = (left / num);\n }\n else {\n var top_1 = position.y - this.element.getBoundingClientRect().top;\n var num = this.element.offsetHeight / 100;\n this.val = 100 - (top_1 / num);\n }\n var val = this.stepValueCalculation(this.val);\n if (val < 0) {\n val = 0;\n }\n else if (val > 100) {\n val = 100;\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n val = 100 - val;\n }\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (val / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (val / 100);\n }\n return pos;\n };\n Slider.prototype.stepValueCalculation = function (value) {\n if (this.step === 0) {\n this.step = 1;\n }\n var percentStep = (parseFloat(formatUnit(this.step))) / ((parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min))) / 100);\n var remain = value % Math.abs(percentStep);\n if (remain !== 0) {\n if ((percentStep / 2) > remain) {\n value -= remain;\n }\n else {\n value += Math.abs(percentStep) - remain;\n }\n }\n return value;\n };\n Slider.prototype.add = function (a, b, addition) {\n var precision;\n var x = Math.pow(10, precision || 3);\n var val;\n if (addition) {\n val = (Math.round(a * x) + Math.round(b * x)) / x;\n }\n else {\n val = (Math.round(a * x) - Math.round(b * x)) / x;\n }\n return val;\n };\n Slider.prototype.positionToValue = function (pos) {\n var val;\n var diff = parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min));\n if (this.orientation === 'Horizontal') {\n val = (pos / this.element.getBoundingClientRect().width) * diff;\n }\n else {\n val = (pos / this.element.getBoundingClientRect().height) * diff;\n }\n var total = this.add(val, parseFloat(this.min.toString()), true);\n return (total);\n };\n Slider.prototype.sliderBarClick = function (evt) {\n evt.preventDefault();\n // eslint-disable-next-line\n var pos;\n if (evt.type === 'mousedown' || evt.type === 'mouseup' || evt.type === 'click') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else if (evt.type === 'touchend' || evt.type === 'touchstart') {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n if (this.type === 'Range' && (this.handlePos2 - handlepos) < (handlepos - this.handlePos1)) {\n this.activeHandle = 2;\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n }\n this.modifyZindex();\n this.secondHandle.focus();\n }\n else {\n this.activeHandle = 1;\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.modifyZindex();\n this.firstHandle.focus();\n }\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.add(classNames.materialTooltipActive);\n }\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement && this.getHandle() !== focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n var handle = this.activeHandle === 1 ? this.firstHandle : this.secondHandle;\n var behindElement;\n if ((evt.type === 'click' || evt.type === 'mousedown') && evt.target === handle) {\n var eventX = evt.clientX, eventY = evt.clientY;\n behindElement = document.elementFromPoint(eventX, eventY);\n }\n if (evt.target === handle && behindElement != handle) {\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.sliderBarUp(evt);\n this.tooltipToggle(this.getHandle());\n return;\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n var transition = this.isMaterial && this.tooltip.isVisible ?\n this.transitionOnMaterialTooltip : this.transition;\n this.getHandle().style.transition = transition.handle;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = transition.rangeBar;\n }\n this.setHandlePosition(evt);\n if (this.isMaterialTooltip) {\n this.initialTooltip = false;\n }\n this.changeEvent('changed', evt);\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.handleValueAdjust = function (handleValue, assignValue, handleNumber) {\n if (handleNumber === 1) {\n this.handleVal1 = assignValue;\n this.handleVal2 = this.handleVal1 + this.minDiff;\n }\n else if (handleNumber === 2) {\n this.handleVal2 = assignValue;\n this.handleVal1 = this.handleVal2 - this.minDiff;\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n };\n Slider.prototype.dragRangeBarMove = function (event) {\n var _a, _b;\n if (event.type !== 'touchmove') {\n event.preventDefault();\n }\n this.rangeBarDragged = true;\n var pos;\n this.rangeBar.style.transition = 'none';\n this.firstHandle.style.transition = 'none';\n this.secondHandle.style.transition = 'none';\n var xPostion;\n var yPostion;\n if (event.type === 'mousemove') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (!(this.limits.enabled && this.limits.startHandleFixed) && !(this.limits.enabled && this.limits.endHandleFixed)) {\n if (!this.enableRtl) {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion + this.secondPartRemain };\n }\n else {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion + this.secondPartRemain };\n }\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n if (!this.enableRtl) {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion - this.firstPartRemain };\n }\n else {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion - this.firstPartRemain };\n }\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = value[0];\n this.handlePos1 = value[1];\n if (this.handleVal1 === this.limits.minEnd) {\n this.handleValueAdjust(this.handleVal1, this.limits.minEnd, 1);\n }\n if (this.handleVal1 === this.limits.minStart) {\n this.handleValueAdjust(this.handleVal1, this.limits.minStart, 1);\n }\n value = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = value[0];\n this.handlePos2 = value[1];\n if (this.handleVal2 === this.limits.maxStart) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxStart, 2);\n }\n if (this.handleVal2 === this.limits.maxEnd) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxEnd, 2);\n }\n }\n if (this.handleVal2 === this.max) {\n this.handleValueAdjust(this.handleVal2, this.max, 2);\n }\n if (this.handleVal1 === this.min) {\n this.handleValueAdjust(this.handleVal1, this.min, 1);\n }\n }\n this.activeHandle = 1;\n this.setHandlePosition(event);\n this.activeHandle = 2;\n this.setHandlePosition(event);\n this.tooltipToggle(this.rangeBar);\n this.setRangeBar();\n };\n Slider.prototype.sliderBarUp = function (event) {\n this.changeEvent('changed', event);\n this.handleFocusOut();\n this.firstHandle.classList.remove(classNames.sliderActiveHandle);\n if (this.type === 'Range') {\n this.initialTooltip = false;\n this.secondHandle.classList.remove(classNames.sliderActiveHandle);\n }\n this.closeTooltip();\n if (this.isMaterial) {\n this.getHandle().classList.remove('e-large-thumb-size');\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.remove(classNames.materialTooltipActive);\n }\n }\n EventHandler.remove(document, 'mousemove touchmove', this.sliderBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.sliderBarUp);\n };\n Slider.prototype.sliderBarMove = function (evt) {\n if (evt.type !== 'touchmove') {\n evt.preventDefault();\n }\n var pos;\n if (evt.type === 'mousemove') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n handlepos = Math.round(handlepos);\n if (this.type !== 'Range' && this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var valueAndPostion = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handlepos = valueAndPostion[1];\n handleVal = valueAndPostion[0];\n }\n this.handlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n }\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (handlepos > this.handlePos2) {\n handlepos = this.handlePos2;\n handleVal = this.handleVal2;\n }\n if (handlepos !== this.preHandlePos1) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n this.activeHandle = 1;\n }\n }\n }\n else if (this.activeHandle === 2) {\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (handlepos < this.handlePos1) {\n handlepos = this.handlePos1;\n handleVal = this.handleVal1;\n }\n if (handlepos !== this.preHandlePos2) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n this.activeHandle = 2;\n }\n }\n }\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n this.getHandle().style.transition = this.scaleTransform;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n this.setHandlePosition(evt);\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.dragRangeBarUp = function (event) {\n if (!this.rangeBarDragged) {\n this.focusSliderElement();\n this.sliderBarClick(event);\n }\n else {\n this.isDragComplete = true;\n }\n this.changeEvent('changed', event);\n this.closeTooltip();\n EventHandler.remove(document, 'mousemove touchmove', this.dragRangeBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.dragRangeBarUp);\n this.rangeBarDragged = false;\n };\n Slider.prototype.checkRepeatedValue = function (currentValue) {\n if (this.type === 'Range') {\n var previousVal = this.enableRtl && this.orientation !== 'Vertical' ? (this.activeHandle === 1 ?\n this.previousVal[1] : this.previousVal[0]) :\n (this.activeHandle === 1 ? this.previousVal[0] : this.previousVal[1]);\n if (currentValue === previousVal) {\n return 0;\n }\n }\n else {\n if (currentValue === this.previousVal) {\n return 0;\n }\n }\n return 1;\n };\n Slider.prototype.refreshTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj) {\n this.tooltipValue();\n if (target) {\n this.tooltipObj.refresh(target);\n this.tooltipTarget = target;\n }\n }\n };\n Slider.prototype.openTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.open(target);\n this.tooltipTarget = target;\n }\n };\n Slider.prototype.closeTooltip = function () {\n if (this.tooltip.isVisible && this.tooltipObj && this.tooltip.showOn !== 'Always' && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.close();\n this.tooltipTarget = undefined;\n }\n };\n Slider.prototype.keyDown = function (event) {\n switch (event.keyCode) {\n case 37:\n case 38:\n case 39:\n case 40:\n case 33:\n case 34:\n case 36:\n case 35:\n event.preventDefault();\n this.buttonClick(event);\n break;\n }\n };\n Slider.prototype.wireButtonEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.firstBtn, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.secondBtn, 'focusout', this.sliderFocusOut, this);\n }\n else {\n EventHandler.remove(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.firstBtn, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.secondBtn, 'focusout', this.sliderFocusOut);\n }\n };\n Slider.prototype.rangeBarMousedown = function (event) {\n var _a, _b;\n event.preventDefault();\n this.focusSliderElement();\n if (this.type === 'Range' && this.drag && event.target === this.rangeBar) {\n var xPostion = void 0;\n var yPostion = void 0;\n if (event.type === 'mousedown') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else if (event.type === 'touchstart') {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (this.orientation === 'Horizontal') {\n this.firstPartRemain = xPostion - this.rangeBar.getBoundingClientRect().left;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().right - xPostion;\n }\n else {\n this.firstPartRemain = yPostion - this.rangeBar.getBoundingClientRect().top;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().bottom - yPostion;\n }\n this.minDiff = this.handleVal2 - this.handleVal1;\n this.tooltipToggle(this.rangeBar);\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.dragRangeBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.dragRangeBarUp, this);\n }\n };\n Slider.prototype.elementClick = function (event) {\n if (this.isDragComplete) {\n this.isDragComplete = false;\n return;\n }\n event.preventDefault();\n this.focusSliderElement();\n this.sliderBarClick(event);\n this.focusHandle();\n };\n Slider.prototype.wireEvents = function () {\n this.onresize = this.reposition.bind(this);\n window.addEventListener('resize', this.onresize);\n if (this.enabled && !this.readonly) {\n EventHandler.add(this.element, 'click', this.elementClick, this);\n if (this.type === 'Range' && this.drag) {\n EventHandler.add(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown, this);\n }\n EventHandler.add(this.sliderContainer, 'keydown', this.keyDown, this);\n EventHandler.add(this.sliderContainer, 'keyup', this.keyUp, this);\n EventHandler.add(this.element, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover, this);\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n if (this.showButtons) {\n this.wireButtonEvt(false);\n }\n this.wireMaterialTooltipEvent(false);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n };\n Slider.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.elementClick);\n if (this.type === 'Range' && this.drag) {\n EventHandler.remove(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown);\n }\n EventHandler.remove(this.sliderContainer, 'keydown', this.keyDown);\n EventHandler.remove(this.sliderContainer, 'keyup', this.keyUp);\n EventHandler.remove(this.element, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover);\n this.wireFirstHandleEvt(true);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(true);\n }\n if (this.showButtons) {\n this.wireButtonEvt(true);\n }\n this.wireMaterialTooltipEvent(true);\n EventHandler.remove(this.element, 'reset', this.formResetHandler);\n };\n Slider.prototype.formResetHandler = function () {\n this.setProperties({ 'value': this.formResetValue }, true);\n this.setValue();\n };\n Slider.prototype.keyUp = function (event) {\n if (event.keyCode === 9 && event.target.classList.contains(classNames.sliderHandle)) {\n this.focusSliderElement();\n if (!event.target.classList.contains(classNames.sliderTabHandle)) {\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n event.target.classList.add(classNames.sliderTabHandle);\n var parentElement = event.target.parentElement;\n if (parentElement === this.element) {\n parentElement.querySelector('.' + classNames.sliderTrack).classList.add(classNames.sliderTabTrack);\n if (this.type === 'Range' || this.type === 'MinRange') {\n parentElement.querySelector('.' + classNames.rangeBar).classList.add(classNames.sliderTabRange);\n }\n }\n if (this.type === 'Range') {\n (event.target.previousSibling).classList.contains(classNames.sliderHandle) ?\n this.activeHandle = 2 : this.activeHandle = 1;\n }\n this.getHandle().focus();\n this.tooltipToggle(this.getHandle());\n }\n }\n this.closeTooltip();\n this.changeEvent('changed', event);\n };\n Slider.prototype.hover = function (event) {\n if (!isNullOrUndefined(event)) {\n if (event.type === 'mouseover' || event.type === 'touchmove' || event.type === 'mousemove' ||\n event.type === 'pointermove' || event.type === 'touchstart') {\n this.sliderContainer.classList.add(classNames.sliderHover);\n }\n else {\n this.sliderContainer.classList.remove(classNames.sliderHover);\n var curTarget = event.currentTarget;\n if (this.tooltip.isVisible && this.tooltip.showOn !== 'Always' && this.tooltipObj && this.isMaterialTooltip &&\n !curTarget.classList.contains(classNames.sliderHandleFocused) &&\n !curTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeMaterialTooltip();\n }\n }\n }\n };\n Slider.prototype.sliderFocusOut = function (event) {\n if (event.relatedTarget !== this.secondHandle && event.relatedTarget !== this.firstHandle &&\n event.relatedTarget !== this.element && event.relatedTarget !== this.firstBtn && event.relatedTarget !== this.secondBtn) {\n this.closeMaterialTooltip();\n this.closeTooltip();\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n if (this.element.querySelector('.' + classNames.sliderTabTrack)) {\n this.element.querySelector('.' + classNames.sliderTabTrack).classList.remove(classNames.sliderTabTrack);\n if ((this.type === 'Range' || this.type === 'MinRange') &&\n this.element.querySelector('.' + classNames.sliderTabRange)) {\n this.element.querySelector('.' + classNames.sliderTabRange).classList.remove(classNames.sliderTabRange);\n }\n }\n this.hiddenInput.focus();\n this.hiddenInput.blur();\n this.isElementFocused = false;\n }\n };\n Slider.prototype.removeElement = function (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n };\n Slider.prototype.changeSliderType = function (type, args) {\n if (this.isMaterialTooltip && this.materialHandle) {\n this.sliderContainer.classList.remove(classNames.materialSlider);\n this.removeElement(this.materialHandle);\n this.materialHandle = undefined;\n }\n this.removeElement(this.firstHandle);\n this.firstHandle = undefined;\n if (type !== 'Default') {\n if (type === 'Range') {\n this.removeElement(this.secondHandle);\n this.secondHandle = undefined;\n }\n this.removeElement(this.rangeBar);\n this.rangeBar = undefined;\n }\n if (this.tooltip.isVisible && !isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n }\n if (this.limits.enabled) {\n if (type === 'MinRange' || type === 'Default') {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n this.removeElement(this.limitBarFirst);\n this.limitBarFirst = undefined;\n }\n }\n else {\n if (!isNullOrUndefined(this.limitBarSecond)) {\n this.removeElement(this.limitBarSecond);\n this.limitBarSecond = undefined;\n }\n }\n }\n this.activeHandle = 1;\n this.getThemeInitialization();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setHandler();\n this.setOrientClass();\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n this.setValue();\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n this.wireMaterialTooltipEvent(false);\n }\n this.setBarColor();\n if (args !== 'tooltip') {\n this.updateConfig();\n }\n };\n Slider.prototype.changeRtl = function () {\n if (!this.enableRtl && this.type === 'Range') {\n this.value = [this.handleVal2, this.handleVal1];\n }\n this.updateConfig();\n if (this.tooltip.isVisible) {\n this.tooltipObj.refresh(this.firstHandle);\n }\n if (this.showButtons) {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': 'Decrease', title: 'Decrease' });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': 'Increase', title: 'Increase' });\n }\n };\n Slider.prototype.changeOrientation = function () {\n this.changeSliderType(this.type, 'null');\n };\n Slider.prototype.updateConfig = function () {\n this.setEnableRTL();\n this.setValue();\n if (this.tooltip.isVisible) {\n this.refreshTooltip(this.tooltipTarget);\n }\n if (this.ticks.placement !== 'None') {\n if (this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n }\n this.limitsPropertyChange();\n };\n Slider.prototype.limitsPropertyChange = function () {\n if (this.limits.enabled) {\n if (isNullOrUndefined(this.limitBarFirst) && this.type !== 'Range') {\n this.createLimitBar();\n }\n if (isNullOrUndefined(this.limitBarFirst) && isNullOrUndefined(this.limitBarSecond) && this.type === 'Range') {\n this.createLimitBar();\n }\n this.setLimitBar();\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n detach(this.limitBarFirst);\n }\n if (!isNullOrUndefined(this.limitBarSecond)) {\n detach(this.limitBarSecond);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Slider.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it removes the attributes and classes.\n *\n * @method destroy\n * @return {void}\n */\n Slider.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n window.removeEventListener('resize', this.onresize);\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n this.firstHandle.removeAttribute('aria-orientation');\n if (this.type === 'Range') {\n this.secondHandle.removeAttribute('aria-orientation');\n }\n this.sliderContainer.parentNode.insertBefore(this.element, this.sliderContainer);\n detach(this.sliderContainer);\n if (this.tooltip.isVisible) {\n this.tooltipObj.destroy();\n }\n this.element.innerHTML = '';\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @private\n */\n // tslint:disable-next-line\n Slider.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'value':\n if (newProp && oldProp) {\n var value = isNullOrUndefined(newProp.value) ?\n (this.type === 'Range' ? [this.min, this.max] : this.min) : newProp.value;\n this.setProperties({ 'value': value }, true);\n if (!isNullOrUndefined(oldProp.value) && oldProp.value.toString() !== value.toString()) {\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (this.type === 'Range') {\n if (isNullOrUndefined(newProp.value) || oldProp.value[1] === value[1]) {\n this.activeHandle = 1;\n }\n else {\n this.activeHandle = 2;\n }\n }\n }\n }\n break;\n case 'min':\n case 'step':\n case 'max':\n this.setMinMaxValue();\n break;\n case 'tooltip':\n if (!isNullOrUndefined(newProp.tooltip) && !isNullOrUndefined(oldProp.tooltip)) {\n this.setTooltip(prop);\n this.wireEvents();\n }\n break;\n case 'type':\n if (!isNullOrUndefined(oldProp) && Object.keys(oldProp).length\n && !isNullOrUndefined(oldProp.type)) {\n this.changeSliderType(oldProp.type, prop);\n this.setZindex();\n }\n break;\n case 'enableRtl':\n if (oldProp.enableRtl !== newProp.enableRtl && this.orientation !== 'Vertical') {\n this.rtl = oldProp.enableRtl;\n this.changeRtl();\n }\n break;\n case 'limits':\n this.limitsPropertyChange();\n break;\n case 'orientation':\n this.changeOrientation();\n break;\n case 'ticks':\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n break;\n case 'locale':\n if (this.showButtons) {\n this.buttonTitle();\n }\n break;\n case 'showButtons':\n if (newProp.showButtons) {\n this.setButtons();\n this.reposition();\n if (this.enabled && !this.readonly) {\n this.wireButtonEvt(false);\n }\n }\n else {\n if (this.firstBtn && this.secondBtn) {\n this.sliderContainer.removeChild(this.firstBtn);\n this.sliderContainer.removeChild(this.secondBtn);\n this.sliderContainer.classList.remove(classNames.sliderButtonClass);\n this.firstBtn = undefined;\n this.secondBtn = undefined;\n this.reposition();\n }\n }\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'readonly':\n this.setReadOnly();\n break;\n case 'customValues':\n this.setValue();\n this.reposition();\n break;\n case 'colorRange':\n this.reposition();\n break;\n case 'width':\n this.setElementWidth(newProp.width);\n this.setMinMaxValue();\n if (this.limits) {\n this.limitsPropertyChange();\n }\n break;\n }\n }\n };\n Slider.prototype.setReadOnly = function () {\n if (this.readonly) {\n this.unwireEvents();\n this.sliderContainer.classList.add(classNames.readonly);\n }\n else {\n this.wireEvents();\n this.sliderContainer.classList.remove(classNames.readonly);\n }\n };\n Slider.prototype.setMinMaxValue = function () {\n var _this = this;\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n if (this.ul) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n };\n Slider.prototype.setZindex = function () {\n this.zIndex = 6;\n if (!isNullOrUndefined(this.ticks) && this.ticks.placement !== 'None') {\n this.ul.style.zIndex = (this.zIndex + -7) + '';\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!this.isMaterial && !isNullOrUndefined(this.ticks) && this.ticks.placement === 'Both') {\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n if (this.type === 'Range') {\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n };\n Slider.prototype.setTooltip = function (args) {\n this.changeSliderType(this.type, args);\n };\n Slider.prototype.setBarColor = function () {\n var trackPosition;\n var trackClassName;\n var child = this.sliderTrack.lastElementChild;\n while (child) {\n this.sliderTrack.removeChild(child);\n child = this.sliderTrack.lastElementChild;\n }\n for (var i = 0; i < this.colorRange.length; i++) {\n if (!isNullOrUndefined(this.colorRange[i].start) && !isNullOrUndefined(this.colorRange[i].end)) {\n if (this.colorRange[i].end > this.colorRange[i].start) {\n if (this.colorRange[i].start < this.min) {\n this.colorRange[i].start = this.min;\n }\n if (this.colorRange[i].end > this.max) {\n this.colorRange[i].end = this.max;\n }\n var startingPosition = this.checkHandlePosition(this.colorRange[i].start);\n var endPosition = this.checkHandlePosition(this.colorRange[i].end);\n var trackContainer = this.createElement('div');\n trackContainer.style.backgroundColor = this.colorRange[i].color;\n trackContainer.style.border = '1px solid ' + this.colorRange[i].color;\n if (this.orientation === 'Horizontal') {\n trackClassName = classNames.sliderHorizantalColor;\n if (this.enableRtl) {\n if (isNullOrUndefined(this.customValues)) {\n trackPosition = this.checkHandlePosition(this.max) - this.checkHandlePosition(this.colorRange[i].end);\n }\n else {\n trackPosition = this.checkHandlePosition(this.customValues.length - this.colorRange[i].end - 1);\n }\n }\n else {\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n }\n trackContainer.style.width = endPosition - startingPosition + 'px';\n trackContainer.style.left = trackPosition + 'px';\n }\n else {\n trackClassName = classNames.sliderVerticalColor;\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n trackContainer.style.height = endPosition - startingPosition + 'px';\n trackContainer.style.bottom = trackPosition + 'px';\n }\n trackContainer.classList.add(trackClassName);\n this.sliderTrack.appendChild(trackContainer);\n }\n }\n }\n };\n /**\n * Gets the component name\n *\n * @private\n */\n Slider.prototype.getModuleName = function () {\n return 'slider';\n };\n __decorate([\n Property(null)\n ], Slider.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"customValues\", void 0);\n __decorate([\n Property(1)\n ], Slider.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], Slider.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], Slider.prototype, \"min\", void 0);\n __decorate([\n Property(100)\n ], Slider.prototype, \"max\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"readonly\", void 0);\n __decorate([\n Property('Default')\n ], Slider.prototype, \"type\", void 0);\n __decorate([\n Collection([{}], ColorRangeData)\n ], Slider.prototype, \"colorRange\", void 0);\n __decorate([\n Complex({}, TicksData)\n ], Slider.prototype, \"ticks\", void 0);\n __decorate([\n Complex({}, LimitData)\n ], Slider.prototype, \"limits\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, TooltipData)\n ], Slider.prototype, \"tooltip\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"showButtons\", void 0);\n __decorate([\n Property(true)\n ], Slider.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property('Horizontal')\n ], Slider.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Slider.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"changed\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderingTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"renderedTicks\", void 0);\n __decorate([\n Event()\n ], Slider.prototype, \"tooltipChange\", void 0);\n Slider = __decorate([\n NotifyPropertyChanges\n ], Slider);\n return Slider;\n}(Component));\nexport { Slider };\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 prefer-spread */\nimport { Component, Event, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Browser, closest, detach, EventHandler, getInstance, select, selectAll, formatUnit } from '@syncfusion/ej2-base';\nimport { addClass, attributes, classList, isNullOrUndefined, L10n } from '@syncfusion/ej2-base';\nimport { remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';\nimport { SplitButton, getModel } from '@syncfusion/ej2-splitbuttons';\nimport { Deferred } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, getZindexPartial, Popup } from '@syncfusion/ej2-popups';\nimport { Input } from './../input/index';\nimport { NumericTextBox } from './../numerictextbox/index';\nimport { Slider } from './../slider/slider';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar CURRENT = 'e-current';\nvar CONTAINER = 'e-container';\nvar CTRLBTN = 'e-ctrl-btn';\nvar CTRLSWITCH = 'e-switch-ctrl-btn';\nvar DISABLED = 'e-disabled';\nvar FORMATSWITCH = 'e-value-switch-btn';\nvar HANDLER = 'e-handler';\nvar HEX = 'e-hex';\nvar HIDEHEX = 'e-hide-hex-value';\nvar HIDEOPACITY = 'e-hide-opacity';\nvar HIDERGBA = 'e-hide-switchable-value';\nvar HIDEVALUE = 'e-hide-value';\nvar HIDEVALUESWITCH = 'e-hide-valueswitcher';\nvar HSVAREA = 'e-hsv-color';\nvar HSVCONTAINER = 'e-hsv-container';\nvar INPUTWRAPPER = 'e-selected-value';\nvar MODESWITCH = 'e-mode-switch-btn';\nvar NOCOLOR = 'e-nocolor-item';\nvar OPACITY = 'e-opacity-value';\nvar PALETTES = 'e-palette';\nvar PALETTECONTENT = 'e-color-palette';\nvar PICKERCONTENT = 'e-color-picker';\nvar PREVIEW = 'e-preview-container';\nvar PREVIOUS = 'e-previous';\nvar RTL = 'e-rtl';\nvar SHOWVALUE = 'e-show-value';\nvar SELECT = 'e-selected';\nvar SPLITPREVIEW = 'e-split-preview';\nvar TILE = 'e-tile';\nvar presets = {\n default: ['#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#ffeb3b',\n '#ffffff', '#ffebee', '#fce4ec', '#f3e5f5', '#ede7f6', '#e3f2fd', '#e1f5fe', '#e0f7fa', '#e0f2f1', '#fffde7',\n '#f2f2f2', '#ffcdd2', '#f8bbd0', '#e1bee7', '#d1c4e9', '#bbdefb', '#b3e5fc', '#b2ebf2', '#b2dfdb', '#fff9c4',\n '#e6e6e6', '#ef9a9a', '#f48fb1', '#ce93d8', '#b39ddb', '#90caf9', '#81d4fa', '#80deea', '#80cbc4', '#fff59d',\n '#cccccc', '#e57373', '#f06292', '#ba68c8', '#9575cd', '#64b5f6', '#4fc3f7', '#4dd0e1', '#4db6ac', '#fff176',\n '#b3b3b3', '#ef5350', '#ec407a', '#ab47bc', '#7e57c2', '#42a5f5', '#29b6f6', '#26c6da', '#26a69a', '#ffee58',\n '#999999', '#e53935', '#d81b60', '#8e24aa', '#5e35b1', '#1e88e5', '#039be5', '#00acc1', '#00897b', '#fdd835',\n '#808080', '#d32f2f', '#c2185b', '#7b1fa2', '#512da8', '#1976d2', '#0288d1', '#0097a7', '#00796b', '#fbc02d',\n '#666666', '#c62828', '#ad1457', '#6a1b9a', '#4527a0', '#1565c0', '#0277bd', '#00838f', '#00695c', '#f9a825',\n '#4d4d4d', '#b71c1c', '#880e4f', '#4a148c', '#311b92', '#0d47a1', '#01579b', '#006064', '#004d40', '#f57f17']\n};\n/**\n * ColorPicker component is a user interface to select and adjust color values. It provides supports for various\n * color specification like Red Green Blue, Hue Saturation Value and Hex codes.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ColorPicker = /** @class */ (function (_super) {\n __extends(ColorPicker, _super);\n function ColorPicker(options, element) {\n return _super.call(this, options, element) || this;\n }\n ColorPicker.prototype.preRender = function () {\n var ele = this.element;\n this.formElement = closest(this.element, 'form');\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n var localeText = { Apply: 'Apply', Cancel: 'Cancel', ModeSwitcher: 'Switch Mode' };\n this.l10n = new L10n('colorpicker', localeText, this.locale);\n if (ele.getAttribute('ejs-for') && !ele.getAttribute('name')) {\n ele.setAttribute('name', ele.id);\n }\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n ColorPicker.prototype.render = function () {\n this.initWrapper();\n if (this.inline) {\n this.createWidget();\n }\n else {\n this.createSplitBtn();\n }\n if (!this.enableOpacity) {\n addClass([this.container.parentElement], HIDEOPACITY);\n }\n this.renderComplete();\n };\n ColorPicker.prototype.initWrapper = function () {\n var wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(wrapper, this.element);\n wrapper.appendChild(this.element);\n attributes(this.element, { 'tabindex': '-1', 'spellcheck': 'false', 'aria-label': 'colorpicker' });\n this.container = this.createElement('div', { className: CONTAINER });\n this.getWrapper().appendChild(this.container);\n var value = this.value ? this.roundValue(this.value).toLowerCase() : '#008000ff';\n if (this.noColor && this.mode === 'Palette' && this.value === '') {\n value = '';\n }\n var slicedValue = value.slice(0, 7);\n if (isNullOrUndefined(this.initialInputValue)) {\n this.initialInputValue = slicedValue;\n }\n this.element.value = slicedValue;\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': slicedValue }, true);\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.tileRipple = rippleEffect(this.container, { selector: '.' + TILE });\n this.ctrlBtnRipple = rippleEffect(this.container, { selector: '.e-btn' });\n };\n ColorPicker.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n ColorPicker.prototype.createWidget = function () {\n if (this.mode === 'Palette') {\n this.createPalette();\n if (!this.inline) {\n this.firstPaletteFocus();\n }\n }\n else {\n this.createPicker();\n if (!this.inline) {\n this.getDragHandler().focus();\n }\n }\n this.isRgb = true;\n this.createInput();\n this.createCtrlBtn();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.inline && this.disabled) {\n this.toggleDisabled(true);\n }\n if (Browser.isDevice) {\n this.refreshPopupPos();\n }\n };\n ColorPicker.prototype.createSplitBtn = function () {\n var _this = this;\n var splitButton = this.createElement('button', { className: 'e-split-colorpicker' });\n this.getWrapper().appendChild(splitButton);\n this.splitBtn = new SplitButton({\n iconCss: 'e-selected-color',\n target: this.container,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n createPopupOnClick: this.createPopupOnClick,\n open: this.onOpen.bind(this),\n click: function () {\n _this.trigger('change', {\n currentValue: { hex: _this.value.slice(0, 7), rgba: _this.convertToRgbString(_this.hexToRgb(_this.value)) },\n previousValue: { hex: null, rgba: null }, value: _this.value\n });\n }\n });\n this.splitBtn.createElement = this.createElement;\n this.splitBtn.appendTo(splitButton);\n var preview = this.createElement('span', { className: SPLITPREVIEW });\n select('.e-selected-color', splitButton).appendChild(preview);\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n var popupEle = this.getPopupEle();\n addClass([popupEle], 'e-colorpicker-popup');\n if (this.cssClass) {\n addClass([popupEle], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (Browser.isDevice) {\n var popupInst = this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(this.splitBtn.element).toString();\n }\n this.bindCallBackEvent();\n };\n ColorPicker.prototype.onOpen = function () {\n this.trigger('open', { element: this.container });\n };\n ColorPicker.prototype.getPopupInst = function () {\n return getInstance(this.getPopupEle(), Popup);\n };\n ColorPicker.prototype.bindCallBackEvent = function () {\n var _this = this;\n this.splitBtn.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observeOpenArgs) {\n if (!observeOpenArgs.cancel) {\n var popupEle = _this.getPopupEle();\n popupEle.style.top = formatUnit(0 + pageYOffset);\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.display = 'block';\n _this.createWidget();\n popupEle.style.display = '';\n if (Browser.isDevice) {\n _this.modal = _this.createElement('div');\n _this.modal.className = 'e-' + _this.getModuleName() + ' e-modal';\n _this.modal.style.display = 'none';\n document.body.insertBefore(_this.modal, popupEle);\n document.body.className += ' e-colorpicker-overflow';\n _this.modal.style.display = 'block';\n _this.modal.style.zIndex = (Number(popupEle.style.zIndex) - 1).toString();\n }\n }\n args.cancel = observeOpenArgs.cancel;\n callBackPromise.resolve(observeOpenArgs);\n });\n return callBackPromise;\n };\n this.splitBtn.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n if (!isNullOrUndefined(args.event)) {\n var beforeCloseArgs = { element: _this.container, event: args.event, cancel: false };\n _this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n if (Browser.isDevice && args.event.target === _this.modal) {\n observedCloseArgs.cancel = true;\n }\n if (!observedCloseArgs.cancel) {\n _this.onPopupClose();\n }\n args.cancel = observedCloseArgs.cancel;\n callBackPromise.resolve(observedCloseArgs);\n });\n }\n else {\n callBackPromise.resolve(args);\n }\n return callBackPromise;\n };\n };\n ColorPicker.prototype.onPopupClose = function () {\n this.unWireEvents();\n this.destroyOtherComp();\n this.container.style.width = '';\n select('.' + SPLITPREVIEW, this.splitBtn.element).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n this.container.innerHTML = '';\n removeClass([this.container], [PICKERCONTENT, PALETTECONTENT]);\n if (Browser.isDevice && this.modal) {\n removeClass([document.body], 'e-colorpicker-overflow');\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n ColorPicker.prototype.createPalette = function () {\n classList(this.container, [PALETTECONTENT], [PICKERCONTENT]);\n if (this.presetColors) {\n var paletteGroup = this.createElement('div', { className: 'e-custom-palette' });\n this.appendElement(paletteGroup);\n var keys = Object.keys(this.presetColors);\n if (keys.length === 1) {\n this.appendPalette(this.presetColors[keys[0]], keys[0], paletteGroup);\n }\n else {\n for (var i = 0, len = keys.length; i < len; i++) {\n this.appendPalette(this.presetColors[keys[i]], keys[i], paletteGroup);\n }\n }\n if (selectAll('.e-row', paletteGroup).length > 10) {\n addClass([paletteGroup], 'e-palette-group');\n }\n }\n else {\n this.appendPalette(presets.default, 'default');\n }\n if (this.mode === 'Palette' && !this.modeSwitcher && this.noColor) {\n this.setNoColor();\n }\n var width = parseInt(getComputedStyle(this.container).borderBottomWidth, 10);\n this.container.style.width = formatUnit(this.container.children[0].offsetWidth + width + width);\n this.rgb = this.hexToRgb(this.roundValue(this.value));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n };\n ColorPicker.prototype.firstPaletteFocus = function () {\n if (!select('.' + SELECT, this.container.children[0])) {\n selectAll('.' + PALETTES, this.container)[0].focus();\n }\n };\n ColorPicker.prototype.appendPalette = function (colors, key, refEle) {\n var palette = this.createElement('div', { className: PALETTES, attrs: { 'tabindex': '0', 'role': 'grid' } });\n if (refEle) {\n refEle.appendChild(palette);\n }\n else {\n this.appendElement(palette);\n }\n var row;\n var tile;\n var roundedColor;\n for (var i = 0, len = colors.length; i < len; i++) {\n if (i === 0 || i % this.columns === 0) {\n row = this.createElement('div', {\n className: 'e-row', attrs: { 'role': 'row' }\n });\n palette.appendChild(row);\n }\n roundedColor = this.roundValue(colors[i]).toLowerCase();\n tile = this.createElement('span', {\n className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false', 'tabindex': '0' }\n });\n this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });\n row.appendChild(tile);\n if (this.value === roundedColor) {\n this.addTileSelection(tile);\n palette.focus();\n }\n tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));\n }\n };\n ColorPicker.prototype.setNoColor = function () {\n var noColorEle = this.container.querySelector('.e-row').children[0];\n noColorEle.classList.add(NOCOLOR);\n if (!this.value) {\n noColorEle.classList.add(SELECT);\n closest(noColorEle, '.' + PALETTES).focus();\n }\n ['aria-selected', 'aria-label'].forEach(function (attr) { noColorEle.removeAttribute(attr); });\n noColorEle.style.backgroundColor = '';\n };\n ColorPicker.prototype.appendElement = function (ele, insertPos) {\n if (insertPos === void 0) { insertPos = 0; }\n var refEle = this.container.children[insertPos];\n if (refEle) {\n this.container.insertBefore(ele, refEle);\n }\n else {\n this.container.appendChild(ele);\n }\n };\n ColorPicker.prototype.addTileSelection = function (ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n };\n ColorPicker.prototype.createPicker = function () {\n classList(this.container, [PICKERCONTENT], [PALETTECONTENT]);\n var hsvContainer = this.createElement('div', { className: HSVCONTAINER });\n this.appendElement(hsvContainer);\n hsvContainer.appendChild(this.createElement('div', { className: HSVAREA }));\n var dragHandler = this.createElement('span', { className: HANDLER, attrs: { 'tabindex': '0' } });\n hsvContainer.appendChild(dragHandler);\n if (this.value === null || this.value === '') {\n this.value = '#008000ff';\n }\n this.rgb = this.hexToRgb(this.value);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHsvContainerBg();\n this.setHandlerPosition();\n this.createSlider();\n this.createDragTooltip();\n };\n ColorPicker.prototype.setHsvContainerBg = function (h) {\n if (h === void 0) { h = this.hsv[0]; }\n this.getHsvContainer().style.backgroundColor = this.convertToRgbString(this.hsvToRgb(h, 100, 100, 1));\n };\n ColorPicker.prototype.getHsvContainer = function () {\n return select('.' + HSVCONTAINER, this.container);\n };\n ColorPicker.prototype.setHandlerPosition = function () {\n var dragHandler = this.getDragHandler();\n var hsvArea = select('.' + HSVAREA, this.container);\n if (this.enableRtl) {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * Math.abs(100 - this.hsv[1]) / 100);\n }\n else {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit(hsvArea.offsetHeight * (100 - this.hsv[2]) / 100);\n };\n ColorPicker.prototype.createSlider = function () {\n var sliderPreviewWrapper = this.createElement('div', { className: 'e-slider-preview' });\n this.appendElement(sliderPreviewWrapper, 1);\n this.createPreview(sliderPreviewWrapper);\n var sliderWrapper = this.createElement('div', { className: 'e-colorpicker-slider' });\n sliderPreviewWrapper.insertBefore(sliderWrapper, sliderPreviewWrapper.children[0]);\n var slider = this.createElement('div', { className: 'e-hue-slider' });\n sliderWrapper.appendChild(slider);\n this.hueSlider = new Slider({\n value: this.hsv[0],\n min: 0,\n max: 359,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.hueChange.bind(this)\n });\n this.hueSlider.createElement = this.createElement;\n this.hueSlider.appendTo(slider);\n if (this.enableOpacity) {\n slider = this.createElement('div', { className: 'e-opacity-slider' });\n sliderWrapper.appendChild(slider);\n this.createOpacitySlider(slider);\n }\n };\n ColorPicker.prototype.createOpacitySlider = function (slider) {\n this.opacitySlider = new Slider({\n value: this.rgb[3] * 100,\n min: 0,\n max: 100,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.opacityChange.bind(this)\n });\n this.opacitySlider.createElement = this.createElement;\n this.opacitySlider.appendTo(slider);\n var opacityBgTrack = this.createElement('div', { className: 'e-opacity-empty-track' });\n slider.appendChild(opacityBgTrack);\n this.updateOpacitySliderBg();\n };\n ColorPicker.prototype.updateOpacitySliderBg = function () {\n var direction = this.enableRtl ? 'to left' : 'to right';\n var opacityEle = select('.e-opacity-empty-track', this.opacitySlider.element);\n if (opacityEle) {\n opacityEle.style.background =\n 'linear-gradient(' + direction + ', rgba(' + this.rgb.slice(0, 3) + ', 0) 0%, ' +\n this.convertToRgbString(this.rgb.slice(0, 3)) + ' 100%)';\n }\n };\n ColorPicker.prototype.hueChange = function (args) {\n this.hsv[0] = args.value;\n this.setHsvContainerBg();\n this.convertToOtherFormat();\n };\n ColorPicker.prototype.opacityChange = function (args) {\n var value = args.value;\n var pValue = this.rgbToHex(this.rgb);\n this.hsv[3] = value / 100;\n this.rgb[3] = value / 100;\n var cValue = this.rgbToHex(this.rgb);\n this.updateOpacityInput(value);\n var rgb = this.convertToRgbString(this.rgb);\n this.updatePreview(rgb);\n this.triggerEvent(cValue, pValue, rgb);\n };\n ColorPicker.prototype.updateOpacityInput = function (value) {\n if (this.enableOpacity && !this.getWrapper().classList.contains(HIDEVALUE)) {\n var opacityTextBoxInst = getInstance(select('.' + OPACITY, this.container), NumericTextBox);\n opacityTextBoxInst.value = value;\n opacityTextBoxInst.dataBind();\n }\n };\n ColorPicker.prototype.createPreview = function (parentEle) {\n var previewContainer = this.createElement('div', { className: PREVIEW });\n parentEle.appendChild(previewContainer);\n var preview = this.createElement('span', { className: 'e-preview ' + CURRENT });\n previewContainer.appendChild(preview);\n var colorValue = this.convertToRgbString(this.rgb);\n preview.style.backgroundColor = colorValue;\n preview = this.createElement('span', { className: 'e-preview ' + PREVIOUS });\n previewContainer.appendChild(preview);\n preview.style.backgroundColor = colorValue;\n };\n ColorPicker.prototype.isPicker = function () {\n return !this.container.classList.contains(PALETTECONTENT);\n };\n ColorPicker.prototype.getPopupEle = function () {\n return this.container.parentElement;\n };\n ColorPicker.prototype.createNumericInput = function (element, value, label, max) {\n var _this = this;\n var numericInput = new NumericTextBox({\n value: value,\n placeholder: label,\n min: 0,\n max: max,\n format: '###.##',\n showSpinButton: false,\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true,\n change: function (args) {\n if (args.event) {\n _this.inputHandler(args.event);\n }\n }\n });\n numericInput.createElement = this.createElement;\n numericInput.appendTo(element);\n };\n ColorPicker.prototype.createInput = function () {\n var isPicker = this.isPicker();\n var wrapper = this.getWrapper();\n if ((isPicker && !wrapper.classList.contains(HIDEVALUE)) || (!isPicker && wrapper.classList.contains(SHOWVALUE))) {\n var inputWrap = this.createElement('div', { className: INPUTWRAPPER });\n if (isPicker) {\n this.appendElement(inputWrap, 2);\n }\n else {\n this.appendElement(inputWrap, 1);\n }\n var container = this.createElement('div', { className: 'e-input-container' });\n inputWrap.appendChild(container);\n if (!wrapper.classList.contains(HIDEVALUESWITCH)) {\n this.appendValueSwitchBtn(inputWrap);\n }\n if (!wrapper.classList.contains(HIDEHEX)) {\n var hexInput = this.createElement('input', {\n className: HEX,\n attrs: { 'maxlength': '7', 'spellcheck': 'false', 'aria-label': 'HEX' }\n });\n container.appendChild(hexInput);\n Input.createInput({\n element: hexInput,\n floatLabelType: 'Always',\n properties: {\n placeholder: 'HEX',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true\n }\n }, this.createElement);\n Input.setValue(this.value.slice(0, 7), hexInput);\n hexInput.addEventListener('input', this.inputHandler.bind(this));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n var label = void 0;\n var value = void 0;\n if (this.isRgb) {\n label = 'RGB';\n value = this.rgb;\n }\n else {\n label = 'HSV';\n value = this.hsv;\n }\n var clsName = ['rh', 'gs', 'bv'];\n for (var i = 0; i < 3; i++) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: 'e-' + clsName[i] + '-value' })), value[i], label[i], 255);\n }\n if (this.enableOpacity) {\n this.appendOpacityValue(container);\n }\n }\n }\n };\n ColorPicker.prototype.appendOpacityValue = function (container) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: OPACITY })), this.rgb[3] * 100, 'A', 100);\n };\n ColorPicker.prototype.appendValueSwitchBtn = function (targetEle) {\n var valueSwitchBtn = this.createElement('button', {\n className: 'e-icons e-css e-btn e-flat e-icon-btn ' + FORMATSWITCH,\n attrs: { 'title': 'Toggle format' }\n });\n targetEle.appendChild(valueSwitchBtn);\n if (this.isPicker() && !this.getWrapper().classList.contains(HIDERGBA)) {\n valueSwitchBtn.addEventListener('click', this.formatSwitchHandler.bind(this));\n }\n };\n ColorPicker.prototype.createCtrlBtn = function () {\n if (this.modeSwitcher || this.showButtons) {\n this.l10n.setLocale(this.locale);\n var btnWrapper = this.createElement('div', { className: CTRLSWITCH });\n this.container.appendChild(btnWrapper);\n if (this.showButtons) {\n var controlBtnWrapper = this.createElement('div', { className: CTRLBTN });\n btnWrapper.appendChild(controlBtnWrapper);\n var apply = this.l10n.getConstant('Apply');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: apply,\n className: 'e-btn e-css e-flat e-primary e-small ' + APPLY,\n attrs: { 'title': apply }\n }));\n var cancel = this.l10n.getConstant('Cancel');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: cancel,\n className: 'e-btn e-css e-flat e-small ' + CANCEL,\n attrs: { 'title': cancel }\n }));\n }\n if (this.modeSwitcher) {\n this.appendModeSwitchBtn();\n }\n }\n };\n ColorPicker.prototype.appendModeSwitchBtn = function () {\n var modeSwitcher = this.createElement('button', {\n className: 'e-icons e-btn e-flat e-icon-btn ' + MODESWITCH, attrs: { title: this.l10n.getConstant('ModeSwitcher') }\n });\n select('.' + CTRLSWITCH, this.container).insertBefore(modeSwitcher, select('.' + CTRLBTN, this.container));\n };\n ColorPicker.prototype.createDragTooltip = function () {\n var _this = this;\n var tooltip = new Tooltip({\n opensOn: 'Custom',\n showTipPointer: false,\n cssClass: 'e-color-picker-tooltip',\n beforeOpen: function (args) {\n _this.tooltipEle = args.element;\n },\n animation: { open: { effect: 'None' }, close: { effect: 'None' } }\n });\n tooltip.createElement = this.createElement;\n tooltip.appendTo(this.container);\n // eslint-disable-next-line\n tooltip.open(this.container);\n this.tooltipEle.style.zIndex = getZindexPartial(this.tooltipEle).toString();\n select('.e-tip-content', this.tooltipEle).appendChild(this.createElement('div', { className: 'e-tip-transparent' }));\n };\n ColorPicker.prototype.getTooltipInst = function () {\n return getInstance(this.container, Tooltip);\n };\n ColorPicker.prototype.setTooltipOffset = function (value) {\n this.getTooltipInst().offsetY = value;\n };\n ColorPicker.prototype.toggleDisabled = function (enable) {\n if (enable) {\n this.getWrapper().classList.add(DISABLED);\n }\n else {\n this.getWrapper().classList.remove(DISABLED);\n }\n if (this.showButtons) {\n ([].slice.call(selectAll('.e-btn', this.container))).forEach(function (ele) {\n if (enable) {\n attributes(ele, { 'disabled': '' });\n }\n else {\n ele.removeAttribute('disabled');\n }\n });\n }\n };\n ColorPicker.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n ColorPicker.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n ColorPicker.prototype.updateHsv = function () {\n this.hsv[1] = this.hsv[1] > 100 ? 100 : this.hsv[1];\n this.hsv[2] = this.hsv[2] > 100 ? 100 : this.hsv[2];\n this.setHandlerPosition();\n };\n ColorPicker.prototype.convertToOtherFormat = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hsvToRgb.apply(this, this.hsv);\n var cValue = this.rgbToHex(this.rgb);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.updateInput(cValue);\n this.triggerEvent(cValue, pValue, rgba, isKey);\n };\n ColorPicker.prototype.updateInput = function (value) {\n var wrapper = this.getWrapper();\n if (!wrapper.classList.contains(HIDEVALUE)) {\n if (!wrapper.classList.contains(HIDEHEX)) {\n Input.setValue(value.substr(0, 7), select('.' + HEX, this.container));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n if (this.isRgb) {\n this.updateValue(this.rgb, false);\n }\n else {\n this.updateValue(this.hsv, false);\n }\n }\n }\n };\n ColorPicker.prototype.updatePreview = function (value) {\n if (this.enableOpacity) {\n this.updateOpacitySliderBg();\n }\n select('.e-tip-transparent', this.tooltipEle).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + PREVIOUS, this.container).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n };\n ColorPicker.prototype.getDragHandler = function () {\n return select('.' + HANDLER, this.container);\n };\n ColorPicker.prototype.removeTileSelection = function () {\n var selectedEle = [].slice.call(selectAll('.' + SELECT, this.container.children[0]));\n selectedEle.forEach(function (ele) {\n ele.classList.remove(SELECT);\n ele.setAttribute('aria-selected', 'false');\n });\n };\n ColorPicker.prototype.convertRgbToNumberArray = function (value) {\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map(function (n, i) {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n };\n /**\n * To get color value in specified type.\n *\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @method getValue\n * @returns {string} - Color value\n */\n ColorPicker.prototype.getValue = function (value, type) {\n if (!value) {\n value = this.value;\n }\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @method toggle\n * @returns {void}\n */\n ColorPicker.prototype.toggle = function () {\n if (this.container.parentElement.classList.contains('e-popup-close')) {\n this.splitBtn.toggle();\n }\n else {\n this.closePopup(null);\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ColorPicker.prototype.getModuleName = function () {\n return 'colorpicker';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ColorPicker.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ColorPicker.prototype.wireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.add(dragHandler, 'keydown', this.pickerKeyDown, this);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.add(ctrlBtn, 'keydown', this.ctrlBtnKeyDown, this);\n }\n EventHandler.add(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown, this);\n if (this.modeSwitcher || this.showButtons) {\n this.addCtrlSwitchEvent();\n }\n EventHandler.add(select('.' + PREVIOUS, this.container), 'click', this.previewHandler, this);\n }\n else {\n EventHandler.add(this.container, 'click', this.paletteClickHandler, this);\n EventHandler.add(this.container, 'keydown', this.paletteKeyDown, this);\n }\n };\n ColorPicker.prototype.formResetHandler = function () {\n this.value = this.initialInputValue;\n attributes(this.element, { 'value': this.initialInputValue });\n };\n ColorPicker.prototype.addCtrlSwitchEvent = function () {\n var ctrlSwitchBtn = select('.' + CTRLSWITCH, this.container);\n if (ctrlSwitchBtn) {\n EventHandler.add(ctrlSwitchBtn, 'click', this.btnClickHandler, this);\n }\n };\n ColorPicker.prototype.ctrlBtnKeyDown = function (e) {\n if (e.keyCode === 13) {\n var applyBtn = select('.' + APPLY, this.container);\n if (applyBtn) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.pickerKeyDown = function (e) {\n switch (e.keyCode) {\n case 39:\n this.handlerDragPosition(1, this.enableRtl ? -1 : 1, e);\n break;\n case 37:\n this.handlerDragPosition(1, this.enableRtl ? 1 : -1, e);\n break;\n case 38:\n this.handlerDragPosition(2, 1, e);\n break;\n case 40:\n this.handlerDragPosition(2, -1, e);\n break;\n case 13: {\n e.preventDefault();\n var cValue = this.rgbToHex(this.rgb);\n this.enterKeyHandler(cValue, e);\n }\n }\n };\n ColorPicker.prototype.enterKeyHandler = function (value, e) {\n this.triggerChangeEvent(value);\n if (!this.inline) {\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.closePopup = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n _this.splitBtn.toggle();\n _this.onPopupClose();\n }\n });\n };\n ColorPicker.prototype.triggerChangeEvent = function (value) {\n var hex = value.slice(0, 7);\n this.trigger('change', {\n currentValue: { hex: hex, rgba: this.convertToRgbString(this.rgb) },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) },\n value: this.enableOpacity ? value : hex\n });\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n };\n ColorPicker.prototype.handlerDragPosition = function (prob, value, e) {\n e.preventDefault();\n this.hsv[prob] += value * (e.ctrlKey ? 1 : 3);\n if (this.hsv[prob] < 0) {\n this.hsv[prob] = 0;\n }\n this.updateHsv();\n this.convertToOtherFormat(true);\n };\n ColorPicker.prototype.handlerDown = function (e) {\n e.preventDefault();\n if (e.type === 'mousedown') {\n this.clientX = Math.abs(e.pageX - pageXOffset);\n this.clientY = Math.abs(e.pageY - pageYOffset);\n this.setTooltipOffset(8);\n }\n else {\n this.clientX = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n this.clientY = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n this.setTooltipOffset(-8);\n }\n this.setHsv(this.clientX, this.clientY);\n this.getDragHandler().style.transition = 'left .4s cubic-bezier(.25, .8, .25, 1), top .4s cubic-bezier(.25, .8, .25, 1)';\n this.updateHsv();\n this.convertToOtherFormat();\n this.getDragHandler().focus();\n EventHandler.add(document, 'mousemove touchmove', this.handlerMove, this);\n EventHandler.add(document, 'mouseup touchend', this.handlerEnd, this);\n };\n ColorPicker.prototype.handlerMove = function (e) {\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n var x;\n var y;\n if (e.type === 'mousemove') {\n x = Math.abs(e.pageX - pageXOffset);\n y = Math.abs(e.pageY - pageYOffset);\n }\n else {\n x = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n y = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n }\n this.setHsv(x, y);\n var dragHandler = this.getDragHandler();\n this.updateHsv();\n this.convertToOtherFormat();\n this.getTooltipInst().refresh(dragHandler);\n if (!this.tooltipEle.style.transform) {\n if (Math.abs(this.clientX - x) > 8 || Math.abs(this.clientY - y) > 8) {\n select('.' + HSVAREA, this.container).style.cursor = 'pointer';\n dragHandler.style.transition = 'none';\n if (!this.inline) {\n this.tooltipEle.style.zIndex = (parseInt(this.getPopupEle().style.zIndex, 10) + 1).toString();\n }\n this.tooltipEle.style.transform = 'rotate(45deg)';\n dragHandler.classList.add('e-hide-handler');\n }\n }\n };\n ColorPicker.prototype.setHsv = function (clientX, clientY) {\n var ele = select('.' + HSVAREA, this.container);\n var position = ele.getBoundingClientRect();\n if (this.enableRtl) {\n clientX = clientX > position.right ? 0 : Math.abs(clientX - position.right);\n }\n else {\n clientX = clientX > position.left ? Math.abs(clientX - position.left) : 0;\n }\n clientY = clientY > position.top ? Math.abs(clientY - position.top) : 0;\n this.hsv[2] = Math.round(Number(100 * (ele.offsetHeight -\n Math.max(0, Math.min(ele.offsetHeight, (clientY - ele.offsetTop)))) / ele.offsetHeight) * 10) / 10;\n this.hsv[1] =\n Math.round(Number(100 * (Math.max(0, Math.min(ele.offsetWidth, (clientX - ele.offsetLeft)))) / ele.offsetWidth) * 10) / 10;\n };\n ColorPicker.prototype.handlerEnd = function (e) {\n if (e.type !== 'touchend') {\n e.preventDefault();\n }\n EventHandler.remove(document, 'mousemove touchmove', this.handlerMove);\n EventHandler.remove(document, 'mouseup touchend', this.handlerEnd);\n var dragHandler = this.getDragHandler();\n select('.' + HSVAREA, this.container).style.cursor = '';\n if (this.tooltipEle.style.transform) {\n this.tooltipEle.style.transform = '';\n dragHandler.classList.remove('e-hide-handler');\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n };\n ColorPicker.prototype.btnClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.' + MODESWITCH)) {\n e.stopPropagation();\n this.switchToPalette();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n }\n };\n ColorPicker.prototype.switchToPalette = function () {\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Palette' });\n this.unWireEvents();\n this.destroyOtherComp();\n detach(select('.e-slider-preview', this.container));\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n detach(this.getHsvContainer());\n this.createPalette();\n this.firstPaletteFocus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Palette' });\n };\n ColorPicker.prototype.refreshPopupPos = function () {\n if (!this.inline) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n this.getPopupInst().refreshPosition(this.splitBtn.element.parentElement);\n }\n };\n ColorPicker.prototype.formatSwitchHandler = function () {\n if (this.isRgb) {\n this.updateValue(this.hsv, true, 3, [360, 100, 100]);\n this.isRgb = false;\n }\n else {\n this.updateValue(this.rgb, true, 2);\n this.isRgb = true;\n }\n };\n ColorPicker.prototype.updateValue = function (value, format, idx, max) {\n var clsName = ['e-rh-value', 'e-gs-value', 'e-bv-value'];\n var inst;\n for (var i = 0, len = clsName.length; i < len; i++) {\n inst = getInstance(select('.' + clsName[i], this.container), NumericTextBox);\n inst.value = Math.round(value[i]);\n if (format) {\n inst.placeholder = clsName[i].substr(idx, 1).toUpperCase();\n inst.max = max ? max[i] : 255;\n }\n inst.dataBind();\n }\n };\n ColorPicker.prototype.previewHandler = function (e) {\n var target = e.target;\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.convertRgbToNumberArray(target.style.backgroundColor);\n if (!this.rgb[3]) {\n this.rgb[3] = 1;\n }\n var cValue = this.rgbToHex(this.rgb);\n var hsv = this.rgbToHsv.apply(this, this.rgb);\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n }\n this.setHsvContainerBg(hsv[0]);\n if (this.enableOpacity && hsv[3] !== this.hsv[3]) {\n this.opacitySlider.setProperties({ 'value': hsv[3] * 100 }, true);\n this.opacitySlider.refresh();\n this.updateOpacitySliderBg();\n }\n this.hsv = hsv;\n this.setHandlerPosition();\n this.updateInput(cValue);\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = this.convertToRgbString(this.rgb);\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n };\n ColorPicker.prototype.paletteClickHandler = function (e) {\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(TILE)) {\n this.removeTileSelection();\n this.addTileSelection(target);\n if (target.classList.contains(NOCOLOR)) {\n this.noColorTile();\n }\n else {\n var cValue = target.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(this.roundValue(cValue));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n }\n else {\n if (closest(target, '.' + MODESWITCH)) {\n this.switchToPicker();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n else {\n if (this.getWrapper().classList.contains(SHOWVALUE) && closest(target, '.' + FORMATSWITCH)) {\n this.formatSwitchHandler();\n }\n }\n }\n }\n };\n ColorPicker.prototype.noColorTile = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = [];\n this.hsv = [];\n this.triggerEvent('', pValue, '', isKey);\n };\n ColorPicker.prototype.switchToPicker = function () {\n var wrapper = this.getWrapper();\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Picker' });\n this.unWireEvents();\n ([].slice.call(selectAll('.' + PALETTES, this.container))).forEach(function (ele) {\n detach(ele);\n });\n if (wrapper.classList.contains(SHOWVALUE)) {\n detach(select('.' + INPUTWRAPPER, this.container));\n }\n this.container.style.width = '';\n var grpEle = select('.e-custom-palette', this.container);\n if (this.presetColors) {\n remove(grpEle);\n }\n this.createPicker();\n this.getDragHandler().focus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Picker' });\n };\n ColorPicker.prototype.ctrlBtnClick = function (ele, e) {\n if (ele.classList.contains(APPLY)) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.paletteKeyDown = function (e) {\n var target = e.target;\n var selectedEle;\n var idx;\n var tiles = [].slice.call(selectAll('.' + TILE, target));\n if ((target.classList.contains('e-palette') || target.classList.contains('e-tile')) && (e.keyCode === 9 && !e.shiftKey)) {\n if (this.modeSwitcher || this.showButtons) {\n this.getPopupEle().querySelector('.e-btn').focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n else if ((target.classList.contains('e-palette') || target.classList.contains('e-tile')) && (e.keyCode === 9 && e.shiftKey)) {\n if (this.splitBtn) {\n this.splitBtn.element.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n var prevSelectedEle = (tiles.filter(function (tile) { return tile.classList.contains('e-selected'); })).pop();\n switch (!e.altKey && e.keyCode) {\n case 39:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? -1 : 1)]\n : tiles[this.enableRtl ? tiles.length - 1 : 0];\n this.keySelectionChanges(selectedEle);\n break;\n case 37:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? 1 : -1)]\n : tiles[this.enableRtl ? 0 : tiles.length - 1];\n this.keySelectionChanges(selectedEle);\n break;\n case 38:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, -this.columns) : 0;\n selectedEle = tiles[idx] ? tiles[idx] : tiles[idx - this.columns];\n this.keySelectionChanges(selectedEle);\n break;\n case 40:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, this.columns) : tiles.length - 1;\n if (tiles[idx]) {\n selectedEle = tiles[idx];\n }\n else {\n idx %= tiles.length;\n idx += tiles[tiles.length - 1].parentElement.childElementCount;\n selectedEle = tiles[idx];\n }\n this.keySelectionChanges(selectedEle);\n break;\n case 13:\n e.preventDefault();\n if (prevSelectedEle) {\n var cValue = prevSelectedEle.getAttribute('aria-label');\n this.enterKeyHandler(cValue ? cValue : '', e);\n }\n }\n };\n ColorPicker.prototype.keySelectionChanges = function (newEle) {\n this.removeTileSelection();\n this.addTileSelection(newEle);\n if (newEle.classList.contains(NOCOLOR)) {\n this.noColorTile(true);\n }\n else {\n var cValue = newEle.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(cValue);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);\n }\n };\n ColorPicker.prototype.tilePosition = function (items, element, cIdx) {\n items = Array.prototype.slice.call(items);\n var n = items.length;\n var emptyCount = this.columns - items[n - 1].parentElement.childElementCount;\n var idx = items.indexOf(element);\n idx += cIdx;\n if (idx < 0) {\n idx += n + emptyCount;\n }\n else {\n idx %= n + emptyCount;\n }\n return idx;\n };\n ColorPicker.prototype.inputHandler = function (e) {\n var target = e.target;\n if (!target.value.length) {\n return;\n }\n var hsv;\n var pValue;\n var label = select('.e-float-text', target.parentElement).textContent;\n switch (label) {\n case 'HEX': {\n var value = '';\n if ((target.value[0] === '#' && target.value.length !== 5) || (target.value[0] !== '#' && target.value.length !== 4)) {\n value = this.roundValue(target.value);\n }\n if (value.length === 9) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(value + value.substr(-2));\n this.inputValueChange(this.rgbToHsv.apply(this, this.rgb), pValue, target.value);\n }\n else {\n return;\n }\n break;\n }\n case 'R':\n if (this.rgb[0] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[0] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'G':\n if (this.rgb[1] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[1] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'B':\n if (this.rgb[2] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[2] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'H':\n this.hueSlider.value = Number(target.value);\n break;\n case 'S':\n if (this.hsv[1] !== Number(target.value)) {\n this.hsv[1] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'V':\n if (this.hsv[2] !== Number(target.value)) {\n this.hsv[2] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'A':\n this.opacitySlider.value = Number(target.value);\n break;\n }\n };\n ColorPicker.prototype.inputValueChange = function (hsv, pValue, value) {\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n this.setHsvContainerBg(hsv[0]);\n }\n this.hsv = hsv;\n var cValue = this.rgbToHex(this.rgb);\n this.setHandlerPosition();\n this.updateInput(value ? value : cValue);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.triggerEvent(cValue, pValue, rgba);\n };\n ColorPicker.prototype.triggerEvent = function (cValue, pValue, rgba, isKey) {\n if (isKey === void 0) { isKey = false; }\n var hex = cValue.slice(0, 7);\n if (!this.showButtons && !isKey) {\n this.trigger('change', { currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) }, value: cValue });\n if (this.enableOpacity) {\n this.setProperties({ 'value': cValue }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n }\n else {\n this.trigger('select', {\n currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: pValue.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(pValue)) }\n });\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n ColorPicker.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n ['tabindex', 'spellcheck'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n if (this.inline) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n else {\n if (this.isPopupOpen()) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n this.splitBtn.destroy();\n this.splitBtn = null;\n }\n this.tileRipple();\n this.tileRipple = null;\n this.ctrlBtnRipple();\n this.ctrlBtnRipple = null;\n if (this.element.nextElementSibling) {\n detach(this.element.nextElementSibling);\n }\n if (wrapper) {\n wrapper.parentElement.insertBefore(this.element, wrapper);\n detach(wrapper);\n }\n this.container = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n ColorPicker.prototype.destroyOtherComp = function () {\n if (this.isPicker()) {\n var popup = closest(this.hueSlider.element, '.e-color-picker');\n var numericElemColl = popup.querySelectorAll('.e-numerictextbox');\n for (var i = 0; i < numericElemColl.length; i++) {\n getInstance(numericElemColl[i], NumericTextBox).destroy();\n }\n this.hueSlider.destroy();\n if (this.enableOpacity) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n this.hueSlider = null;\n var tooltipInst = this.getTooltipInst();\n tooltipInst.close();\n tooltipInst.destroy();\n this.tooltipEle = null;\n }\n };\n ColorPicker.prototype.isPopupOpen = function () {\n return this.getPopupEle().classList.contains('e-popup-open');\n };\n ColorPicker.prototype.unWireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.remove(dragHandler, 'keydown', this.pickerKeyDown);\n var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.remove(ctrlBtn, 'keydown', this.ctrlBtnKeyDown);\n }\n EventHandler.remove(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown);\n if (this.modeSwitcher || this.showButtons) {\n EventHandler.remove(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler);\n }\n EventHandler.remove(select('.' + PREVIOUS, this.container), 'click', this.previewHandler);\n }\n else {\n EventHandler.remove(this.container, 'click', this.paletteClickHandler);\n EventHandler.remove(this.container, 'keydown', this.paletteKeyDown);\n }\n };\n ColorPicker.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n ColorPicker.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n ColorPicker.prototype.rgbToHsv = function (r, g, b, opacity) {\n if (this.rgb && !this.rgb.length) {\n return [];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n ColorPicker.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n ColorPicker.prototype.rgbToHex = function (rgb) {\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n };\n ColorPicker.prototype.hex = function (x) {\n return ('0' + x.toString(16)).slice(-2);\n };\n ColorPicker.prototype.changeModeSwitcherProp = function (prop) {\n var ctrlSwitchWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlSwitchWrapper) {\n this.appendModeSwitchBtn();\n }\n else {\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n }\n else {\n if (ctrlSwitchWrapper) {\n if (this.showButtons) {\n detach(select('.' + MODESWITCH, ctrlSwitchWrapper));\n }\n else {\n remove(ctrlSwitchWrapper);\n }\n }\n }\n };\n ColorPicker.prototype.changeShowBtnProps = function (prop) {\n var ctrlBtnWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlBtnWrapper) {\n remove(ctrlBtnWrapper);\n }\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n else {\n if (this.modeSwitcher) {\n detach(select('.' + CTRLBTN, ctrlBtnWrapper));\n }\n else {\n remove(ctrlBtnWrapper);\n }\n }\n };\n ColorPicker.prototype.changeValueProp = function (newProp) {\n if (this.isPicker()) {\n this.rgb = this.hexToRgb(newProp);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHandlerPosition();\n detach(closest(this.hueSlider.element, '.e-slider-preview'));\n this.createSlider();\n this.setHsvContainerBg();\n this.updateInput(newProp);\n if (this.rgb.length === 4) {\n this.updateOpacityInput(this.rgb[3] * 100);\n }\n }\n else {\n this.removeTileSelection();\n var ele = this.container.querySelector('span[aria-label=\"' + this.roundValue(newProp) + '\"]');\n if (ele) {\n this.addTileSelection(ele);\n }\n }\n };\n ColorPicker.prototype.setInputEleProps = function () {\n remove(select('.' + INPUTWRAPPER, this.container));\n this.createInput();\n };\n ColorPicker.prototype.changeDisabledProp = function (newProp) {\n if (this.isPicker()) {\n this.hueSlider.enabled = !newProp;\n this.opacitySlider.enabled = !newProp;\n this.setInputEleProps();\n }\n if (newProp) {\n this.toggleDisabled(true);\n this.unWireEvents();\n }\n else {\n this.toggleDisabled(false);\n this.wireEvents();\n }\n };\n ColorPicker.prototype.changeCssClassProps = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n var popupWrapper = this.getPopupEle();\n if (oldProp) {\n removeClass([wrapper, popupWrapper], oldProp.split(' '));\n }\n if (newProp) {\n addClass([wrapper, popupWrapper], newProp.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n ColorPicker.prototype.changeRtlProps = function (newProp) {\n if (newProp) {\n addClass([this.getWrapper()], 'e-rtl');\n }\n else {\n removeClass([this.getWrapper()], 'e-rtl');\n }\n };\n ColorPicker.prototype.changePaletteProps = function () {\n detach(this.container.children[0]);\n this.container.style.width = '';\n this.createPalette();\n };\n ColorPicker.prototype.changeOpacityProps = function (newProp) {\n var wrapper = this.getWrapper();\n if (newProp) {\n removeClass([this.container.parentElement], HIDEOPACITY);\n this.createOpacitySlider(select('.e-colorpicker-slider', this.container).appendChild(this.createElement('div', { className: 'e-opacity-slider' })));\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n this.appendOpacityValue(select('.e-input-container', this.container));\n }\n }\n else {\n addClass([this.container.parentElement], HIDEOPACITY);\n this.opacitySlider.destroy();\n remove(this.opacitySlider.element);\n this.opacitySlider = null;\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n remove(select('.' + OPACITY, this.container).parentElement);\n }\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ColorPickerModel} newProp - Specifies new properties\n * @param {ColorPickerModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ColorPicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.value)) {\n var value = this.roundValue(newProp.value);\n if (value.length === 9) {\n this.element.value = this.roundValue(value).slice(0, 7);\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n if (preview) {\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(newProp.value));\n }\n }\n else if (this.noColor && this.mode === 'Palette' && this.value === '') {\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n preview.style.backgroundColor = '';\n }\n else {\n this.value = oldProp.value;\n }\n }\n if (!this.inline && isNullOrUndefined(newProp.inline)) {\n var otherCompModel = ['disabled', 'enableRtl'];\n this.splitBtn.setProperties(getModel(newProp, otherCompModel));\n if (!this.isPopupOpen()) {\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n this.changeRtlProps(newProp.enableRtl);\n return;\n }\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'inline':\n if (newProp.inline) {\n this_1.getWrapper().appendChild(this_1.container);\n this_1.splitBtn.destroy();\n detach(this_1.element.nextElementSibling);\n if (!this_1.container.children.length) {\n this_1.createWidget();\n }\n }\n else {\n this_1.destroyOtherComp();\n this_1.unWireEvents();\n this_1.container.innerHTML = '';\n this_1.createSplitBtn();\n }\n break;\n case 'cssClass': {\n this_1.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n var props = newProp.cssClass.split(' ').concat(oldProp.cssClass.split(' '));\n props = props.reduce(function (a, b) { if (a.indexOf(b) < 0) {\n a.push(b);\n } return a; }, []);\n var count_1 = 0;\n props.forEach(function (cls) {\n if (count_1 === 0 &&\n (cls === HIDEVALUE || cls === HIDEVALUESWITCH || cls === SHOWVALUE || cls === HIDEHEX || cls === HIDERGBA)) {\n var inputWrap = select('.' + INPUTWRAPPER, _this.container);\n if (inputWrap) {\n remove(select('.' + INPUTWRAPPER, _this.container));\n }\n _this.createInput();\n count_1++;\n }\n });\n break;\n }\n case 'enableRtl':\n if (this_1.isPicker()) {\n this_1.hueSlider.enableRtl = newProp.enableRtl;\n if (this_1.enableOpacity) {\n this_1.opacitySlider.enableRtl = newProp.enableRtl;\n }\n this_1.setInputEleProps();\n }\n this_1.changeRtlProps(newProp.enableRtl);\n break;\n case 'disabled':\n this_1.changeDisabledProp(newProp.disabled);\n break;\n case 'value':\n if (this_1.value !== oldProp.value) {\n this_1.changeValueProp(newProp.value);\n }\n break;\n case 'showButtons':\n this_1.changeShowBtnProps(newProp.showButtons);\n break;\n case 'mode':\n if (newProp.mode === 'Picker') {\n this_1.switchToPicker();\n }\n else {\n this_1.switchToPalette();\n }\n break;\n case 'modeSwitcher':\n this_1.changeModeSwitcherProp(newProp.modeSwitcher);\n break;\n case 'columns':\n case 'presetColors':\n if (!this_1.isPicker()) {\n this_1.changePaletteProps();\n }\n break;\n case 'noColor':\n if (newProp.noColor) {\n if (this_1.mode === 'Palette' && !this_1.modeSwitcher) {\n this_1.setNoColor();\n }\n }\n else {\n this_1.changePaletteProps();\n }\n break;\n case 'enableOpacity':\n this_1.changeOpacityProps(newProp.enableOpacity);\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 /**\n * Sets the focus to Colorpicker\n * its native method\n *\n * @public\n * @returns {void}\n */\n ColorPicker.prototype.focusIn = function () {\n this.element.parentElement.focus();\n };\n __decorate([\n Property('#008000ff')\n ], ColorPicker.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ColorPicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"disabled\", void 0);\n __decorate([\n Property('Picker')\n ], ColorPicker.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"modeSwitcher\", void 0);\n __decorate([\n Property(null)\n ], ColorPicker.prototype, \"presetColors\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"showButtons\", void 0);\n __decorate([\n Property(10)\n ], ColorPicker.prototype, \"columns\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"inline\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"noColor\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], ColorPicker.prototype, \"enableOpacity\", void 0);\n __decorate([\n Property(false)\n ], ColorPicker.prototype, \"createPopupOnClick\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeTileRender\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"onModeSwitch\", void 0);\n __decorate([\n Event()\n ], ColorPicker.prototype, \"created\", void 0);\n ColorPicker = __decorate([\n NotifyPropertyChanges\n ], ColorPicker);\n return ColorPicker;\n}(Component));\nexport { ColorPicker };\n","import { addClass, Browser, removeClass, EventHandler, formatUnit, isNullOrUndefined, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { getInstance, closest, selectAll, detach } from '@syncfusion/ej2-base';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Popup, Tooltip } from '@syncfusion/ej2-popups';\nimport * as classes from '../base/classes';\nimport * as events from '../base/constant';\nimport { CLS_TOOLBAR, CLS_DROPDOWN_BTN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_INLINE_DROPDOWN, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_BULLETFORMATLIST_TB_BTN, CLS_NUMBERFORMATLIST_TB_BTN, CLS_LIST_PRIMARY_CONTENT } from '../base/classes';\nimport { ColorPicker } from '@syncfusion/ej2-inputs';\nimport { hasClass } from '../base/util';\n/**\n * `Toolbar renderer` module is used to render toolbar in RichTextEditor.\n *\n * @hidden\n\n */\nvar ToolbarRenderer = /** @class */ (function () {\n /**\n * Constructor for toolbar renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n */\n function ToolbarRenderer(parent) {\n this.parent = parent;\n this.wireEvent();\n }\n ToolbarRenderer.prototype.wireEvent = function () {\n this.parent.on(events.destroy, this.unWireEvent, this);\n };\n ToolbarRenderer.prototype.unWireEvent = function () {\n this.parent.off(events.destroy, this.unWireEvent);\n if (this.popupOverlay) {\n EventHandler.remove(this.popupOverlay, 'click touchmove', this.onPopupOverlay);\n }\n this.removePopupContainer();\n };\n ToolbarRenderer.prototype.toolbarBeforeCreate = function (e) {\n if (this.mode === 'Extended') {\n e.enableCollision = false;\n }\n };\n ToolbarRenderer.prototype.toolbarCreated = function () {\n this.parent.notify(events.toolbarCreated, this);\n };\n ToolbarRenderer.prototype.toolbarClicked = function (args) {\n if (!this.parent.enabled) {\n return;\n }\n if (!this.parent.readonly || isNullOrUndefined(args.item)) {\n this.parent.notify(events.toolbarClick, args);\n }\n this.parent.trigger('toolbarClick', args);\n };\n ToolbarRenderer.prototype.dropDownSelected = function (args) {\n this.parent.notify(events.dropDownSelect, args);\n this.onPopupOverlay();\n };\n ToolbarRenderer.prototype.beforeDropDownItemRender = function (args) {\n if (this.parent.readonly || !this.parent.enabled) {\n return;\n }\n this.parent.notify(events.beforeDropDownItemRender, args);\n };\n ToolbarRenderer.prototype.dropDownOpen = function (args) {\n if (args.element.parentElement.getAttribute('id').indexOf('TableCell') > -1 && !isNOU(args.element.parentElement.querySelector('.e-cell-merge')) &&\n (!isNOU(args.element.parentElement.querySelector('.e-cell-horizontal-split')) || !isNOU(args.element.parentElement.querySelector('.e-cell-vertical-split')))) {\n var listEle = args.element.querySelectorAll('li');\n if (this.parent.inputElement.querySelectorAll('.e-cell-select').length === 1) {\n addClass([listEle[0]], 'e-disabled');\n removeClass([listEle[1], listEle[2]], 'e-disabled');\n }\n else if (this.parent.inputElement.querySelectorAll('.e-cell-select').length > 1) {\n removeClass([listEle[0]], 'e-disabled');\n addClass([listEle[1], listEle[2]], 'e-disabled');\n }\n }\n if (Browser.isDevice && !args.element.parentElement.classList.contains(classes.CLS_QUICK_DROPDOWN)) {\n this.popupModal(args.element.parentElement);\n }\n this.parent.notify(events.selectionSave, args);\n };\n ToolbarRenderer.prototype.dropDownClose = function (args) {\n this.removePopupContainer();\n this.parent.notify(events.selectionRestore, args);\n };\n ToolbarRenderer.prototype.removePopupContainer = function () {\n if (Browser.isDevice && !isNullOrUndefined(this.popupContainer)) {\n var popupEle = this.popupContainer.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');\n if (popupEle) {\n this.popupContainer.parentNode.insertBefore(popupEle, this.popupContainer.nextSibling);\n popupEle.style.removeProperty('position');\n removeClass([popupEle], 'e-popup-modal');\n }\n detach(this.popupContainer);\n this.popupContainer = undefined;\n }\n };\n /**\n * renderToolbar method\n *\n * @param {IToolbarOptions} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderToolbar = function (args) {\n this.setPanel(args.target);\n this.renderPanel();\n this.mode = args.overflowMode;\n args.rteToolbarObj.toolbarObj = new Toolbar({\n items: args.items,\n width: '100%',\n overflowMode: args.overflowMode,\n beforeCreate: this.toolbarBeforeCreate.bind(this),\n created: this.toolbarCreated.bind(this),\n clicked: this.toolbarClicked.bind(this),\n enablePersistence: args.enablePersistence,\n enableRtl: args.enableRtl,\n cssClass: args.cssClass\n });\n args.rteToolbarObj.toolbarObj.isStringTemplate = true;\n args.rteToolbarObj.toolbarObj.createElement = this.parent.createElement;\n args.rteToolbarObj.toolbarObj.appendTo(args.target);\n if (this.parent.showTooltip) {\n var tooltip = new Tooltip({\n target: '#' + this.parent.getID() + '_toolbar_wrapper [title]',\n showTipPointer: true,\n cssClass: this.parent.cssClass\n });\n tooltip.appendTo(args.target);\n }\n };\n /**\n * renderDropDownButton method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderDropDownButton = function (args) {\n var _this = this;\n var css;\n args.element.classList.add(CLS_DROPDOWN_BTN);\n css = args.cssClass + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN;\n if (this.parent.inlineMode.enable && Browser.isDevice) {\n css = css + ' ' + CLS_INLINE_DROPDOWN;\n }\n // eslint-disable-next-line\n var proxy = this;\n var dropDown = new DropDownButton({\n items: args.items,\n iconCss: args.iconCss,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n // eslint-disable-next-line\n for (var index = 0; index < args.element.childNodes.length; index++) {\n var divNode = _this.parent.createElement('div');\n divNode.innerHTML = dropDown.content.trim();\n if (divNode.textContent.trim() !== ''\n && args.element.childNodes[index].textContent.trim() === divNode.textContent.trim()) {\n if (!args.element.childNodes[index].classList.contains('e-active')) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n else {\n removeClass([args.element.childNodes[index]], 'e-active');\n }\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n return dropDown;\n };\n /**\n * renderListDropDown method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderListDropDown = function (args) {\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((args.itemName === 'NumberFormatList') ? CLS_NUMBERFORMATLIST_TB_BTN : CLS_BULLETFORMATLIST_TB_BTN));\n var content = proxy.parent.createElement('span', { className: CLS_LIST_PRIMARY_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n items: args.items,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n var element = (args.event) ? args.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n if (args.event && args.event.type === 'click' && (element.classList.contains(CLS_LIST_PRIMARY_CONTENT)\n || element.parentElement.classList.contains(CLS_LIST_PRIMARY_CONTENT))) {\n args.cancel = true;\n return;\n }\n proxy.parent.notify(events.beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n args.element.setAttribute('role', 'button');\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n if (args.element.childElementCount === 1) {\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n }\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n return dropDown;\n };\n // eslint-disable-next-line\n ToolbarRenderer.prototype.onPopupOverlay = function (args) {\n if (!isNullOrUndefined(this.popupOverlay)) {\n closest(this.popupOverlay, '.e-popup-container').style.display = 'none';\n this.popupOverlay.style.display = 'none';\n removeClass([this.popupOverlay], 'e-popup-overlay');\n }\n };\n ToolbarRenderer.prototype.setIsModel = function (element) {\n if (!closest(element, '.e-popup-container')) {\n this.popupContainer = this.parent.createElement('div', {\n className: 'e-rte-modal-popup e-popup-container e-center'\n });\n element.parentNode.insertBefore(this.popupContainer, element);\n this.popupContainer.appendChild(element);\n this.popupContainer.style.zIndex = element.style.zIndex;\n this.popupContainer.style.display = 'flex';\n element.style.position = 'relative';\n addClass([element], 'e-popup-modal');\n this.popupOverlay = this.parent.createElement('div', { className: 'e-popup-overlay' });\n // eslint-disable-next-line\n this.popupOverlay.style.zIndex = (parseInt(element.style.zIndex, null) - 1).toString();\n this.popupOverlay.style.display = 'block';\n this.popupContainer.appendChild(this.popupOverlay);\n EventHandler.add(this.popupOverlay, 'click touchmove', this.onPopupOverlay, this);\n }\n else {\n element.parentElement.style.display = 'flex';\n this.popupOverlay = element.nextElementSibling;\n this.popupOverlay.style.display = 'block';\n addClass([this.popupOverlay], 'e-popup-overlay');\n }\n };\n ToolbarRenderer.prototype.paletteSelection = function (dropDownArgs, currentElement) {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var colorbox = [].slice.call(selectAll('.e-tile', ele.parentElement));\n removeClass(colorbox, 'e-selected');\n var style = currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n (colorbox.filter(function (colorbox) {\n if (colorbox.style.backgroundColor === style) {\n addClass([colorbox], 'e-selected');\n }\n }));\n };\n /**\n * renderColorPickerDropDown method\n *\n * @param {IColorPickerModel} args - specifies the arguments.\n * @param {string} item - specifies the item.\n * @param {ColorPicker} colorPicker - specifies the colorpicker.\n * @param {string} defaultColor -specifies the defaultColor.\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPickerDropDown = function (args, item, colorPicker, defaultColor) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_DROPDOWN : CLS_FONT_COLOR_DROPDOWN));\n css += ' ' + this.parent.cssClass;\n var content = proxy.parent.createElement('span', { className: CLS_COLOR_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n var range;\n var initialBackgroundColor = (isNullOrUndefined(defaultColor)) ? proxy.parent.backgroundColor.default : defaultColor;\n inlineEle.style.borderBottomColor = (item === 'backgroundcolor') ?\n initialBackgroundColor : proxy.parent.fontColor.default;\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n target: colorPicker.element.parentElement, cssClass: css,\n enablePersistence: this.parent.enablePersistence, enableRtl: this.parent.enableRtl,\n beforeOpen: function (dropDownArgs) {\n colorPicker.inline = true;\n colorPicker.dataBind();\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n dropDownArgs.cancel = true;\n return;\n }\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n proxy.paletteSelection(dropDownArgs, proxy.currentElement);\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n dropDownArgs.cancel = true;\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n proxy.parent.notify(events.selectionRestore, {});\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var parentNode = range.startContainer.parentNode;\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n (closest(range.startContainer.parentNode, 'td,th')) ||\n (proxy.parent.iframeSettings.enable && !hasClass(parentNode.ownerDocument.querySelector('body'), 'e-lib')))\n && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + classes.CLS_RTE)) {\n proxy.parent.notify(events.tableColorPickerChanged, {\n item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n else {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var inst = getInstance(ele, ColorPicker);\n inst.showButtons = (dropDownArgs.element.querySelector('.e-color-palette')) ? false : true;\n inst.dataBind();\n }\n dropDownArgs.element.onclick = function (args) {\n if (args.target.classList.contains('e-cancel')) {\n dropDown.toggle();\n }\n };\n },\n open: function (dropDownArgs) {\n _this.setColorPickerContentWidth(colorPicker);\n var focusEle;\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n if (dropDownArgs.element.querySelector('.e-color-palette')) {\n focusEle = ele.parentElement.querySelector('.e-palette');\n }\n else {\n focusEle = ele.parentElement.querySelector('e-handler');\n }\n if (focusEle) {\n focusEle.focus();\n }\n if (Browser.isDevice) {\n _this.popupModal(dropDownArgs.element.parentElement);\n }\n _this.pickerRefresh(dropDownArgs);\n },\n beforeClose: function (dropDownArgs) {\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed) {\n proxy.parent.notify(events.tableColorPickerChanged, { item: {\n command: args.command, subCommand: args.subCommand,\n value: colorpickerValue\n }\n });\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n },\n close: function (dropDownArgs) {\n proxy.parent.notify(events.selectionRestore, {});\n var dropElement = closest(dropDownArgs.element.parentElement, '.e-popup-container');\n if (dropElement) {\n dropElement.style.display = 'none';\n dropElement.lastElementChild.style.display = 'none';\n removeClass([dropElement.lastElementChild], 'e-popup-overlay');\n }\n if (Browser.isDevice && !isNullOrUndefined(dropElement)) {\n var popupEle = dropElement.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');\n if (popupEle) {\n dropElement.parentNode.insertBefore(popupEle, dropElement.nextSibling);\n popupEle.style.removeProperty('position');\n removeClass([popupEle], 'e-popup-modal');\n }\n detach(dropElement);\n proxy.popupContainer = undefined;\n }\n }\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n args.element.setAttribute('role', 'button');\n dropDown.appendTo(args.element);\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n dropDown.element.onmousedown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n dropDown.element.onkeydown = function () {\n proxy.parent.notify(events.selectionSave, {});\n };\n return dropDown;\n };\n ToolbarRenderer.prototype.pickerRefresh = function (dropDownArgs) {\n if (this.parent.backgroundColor.mode === 'Picker') {\n var popupElem = dropDownArgs.element.parentElement;\n popupElem.style.width = (popupElem.offsetWidth + 5).toString() + 'px';\n getInstance(popupElem, Popup).refreshPosition(popupElem);\n popupElem.style.width = (popupElem.offsetWidth - 5).toString() + 'px';\n }\n };\n ToolbarRenderer.prototype.popupModal = function (element) {\n var popupInst = getInstance(element, Popup);\n popupInst.relateTo = document.body;\n popupInst.position = { X: 0, Y: 0 };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupInst.dataBind();\n this.setIsModel(element);\n };\n ToolbarRenderer.prototype.setColorPickerContentWidth = function (colorPicker) {\n var colorPickerContent = colorPicker.element.nextSibling;\n if (colorPickerContent.style.width === '0px') {\n colorPickerContent.style.width = '';\n var borderWidth = parseInt(getComputedStyle(colorPickerContent).borderBottomWidth, 10);\n colorPickerContent.style.width = formatUnit(colorPickerContent.children[0].offsetWidth\n + borderWidth + borderWidth);\n }\n };\n /**\n * renderColorPicker method\n *\n * @param {IColorPickerModel} args - specifies the arguments\n * @param {string} item - specifies the string values\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderColorPicker = function (args, item) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var value;\n var colorPicker = new ColorPicker({\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n inline: false,\n value: '#fff',\n created: function () {\n var value = (item === 'backgroundcolor') ? proxy.parent.backgroundColor.default : proxy.parent.fontColor.default;\n colorPicker.setProperties({ value: value });\n },\n mode: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.mode : proxy.parent.fontColor.mode),\n modeSwitcher: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.modeSwitcher : proxy.parent.fontColor.modeSwitcher),\n beforeTileRender: function (args) {\n args.element.classList.add(CLS_COLOR_PALETTE);\n args.element.classList.add(CLS_CUSTOM_TILE);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n args.element.classList.add(allClassName[i]);\n }\n }\n }\n if (args.value === '') {\n args.element.classList.add(CLS_NOCOLOR_ITEM);\n }\n },\n change: function (colorPickerArgs) {\n var colorpickerValue = colorPickerArgs.currentValue.rgba;\n colorPickerArgs.item = {\n command: args.command,\n subCommand: args.subCommand,\n value: colorpickerValue\n };\n proxy.parent.notify(events.selectionRestore, {});\n proxy.currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor = colorpickerValue;\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' || range.startContainer.nodeName === 'BODY' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + classes.CLS_RTE)) {\n proxy.parent.notify(events.tableColorPickerChanged, colorPickerArgs);\n }\n else {\n proxy.parent.notify(events.colorPickerChanged, colorPickerArgs);\n }\n proxy.currentDropdown.toggle();\n },\n beforeModeSwitch: function (args) {\n value = colorPicker.value;\n if (value === '') {\n colorPicker.setProperties({ value: ((args.mode === 'Picker') ? '#008000ff' : '') }, true);\n }\n colorPicker.showButtons = args.mode === 'Palette' ? false : true;\n }\n });\n colorPicker.isStringTemplate = true;\n colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;\n colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :\n this.parent.fontColor.colorCode;\n colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;\n colorPicker.createElement = this.parent.createElement;\n colorPicker.appendTo(document.getElementById(args.target));\n return colorPicker;\n };\n /**\n * The function is used to render Rich Text Editor toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n ToolbarRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_TOOLBAR);\n };\n /**\n * Get the toolbar element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n ToolbarRenderer.prototype.getPanel = function () {\n return this.toolbarPanel;\n };\n /**\n * Set the toolbar element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element.\n * @hidden\n\n */\n ToolbarRenderer.prototype.setPanel = function (panel) {\n this.toolbarPanel = panel;\n };\n return ToolbarRenderer;\n}());\nexport { ToolbarRenderer };\n","import { RenderType } from '../base/enum';\nimport { CLS_HR_SEPARATOR } from '../base/classes';\nimport * as events from '../base/constant';\nimport { getTooltipText, isIDevice, toObjectLowerCase } from '../base/util';\nimport { tools, templateItems, windowKeys } from '../models/items';\nimport { isNullOrUndefined, extend, Browser } from '@syncfusion/ej2-base';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar BaseToolbar = /** @class */ (function () {\n function BaseToolbar(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n BaseToolbar.prototype.addEventListener = function () {\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n BaseToolbar.prototype.removeEventListener = function () {\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n BaseToolbar.prototype.setCssClass = function (e) {\n if (!isNullOrUndefined(this.toolbarObj)) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n BaseToolbar.prototype.setRtl = function (args) {\n if (!isNullOrUndefined(this.toolbarObj)) {\n this.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n };\n BaseToolbar.prototype.getClass = function (item) {\n var classes;\n switch (item) {\n case 'fontsize':\n classes = 'e-rte-inline-size-template';\n break;\n case 'fontcolor':\n case 'backgroundcolor':\n classes = 'e-rte-inline-color-template';\n break;\n default:\n classes = 'e-rte-inline-template';\n break;\n }\n return classes;\n };\n BaseToolbar.prototype.getTemplateObject = function (itemStr, container) {\n var tagName;\n switch (itemStr) {\n case 'fontcolor':\n case 'backgroundcolor':\n case 'numberformatlist':\n case 'bulletformatlist':\n tagName = 'span';\n break;\n default:\n tagName = 'button';\n break;\n }\n return {\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand,\n template: this.parent.createElement(tagName, {\n id: this.parent.getID() + '_' + container\n + '_' + this.tools[itemStr.toLocaleLowerCase()].id\n }).outerHTML,\n cssClass: this.parent.inlineMode.enable ? this.getClass(itemStr) : '',\n tooltipText: getTooltipText(itemStr, this.locator)\n };\n };\n /**\n * getObject method\n *\n * @param {string} item - specifies the string value\n * @param {string} container - specifies the value of string\n * @returns {IToolbarItemModel} - returns the model element\n * @hidden\n\n */\n BaseToolbar.prototype.getObject = function (item, container) {\n var itemStr = item.toLowerCase();\n if (templateItems.indexOf(itemStr) !== -1) {\n return this.getTemplateObject(itemStr, container);\n }\n else {\n switch (itemStr) {\n case '|':\n return { type: 'Separator' };\n case '-':\n return { type: 'Separator', cssClass: CLS_HR_SEPARATOR };\n default:\n if (this.parent.showTooltip) {\n return {\n id: this.parent.getID() + '_' + container + '_' + this.tools[itemStr.toLocaleLowerCase()].id,\n prefixIcon: this.tools[itemStr.toLocaleLowerCase()].icon,\n tooltipText: getTooltipText(itemStr, this.locator),\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand\n };\n }\n else {\n return {\n id: this.parent.getID() + '_' + container + '_' + this.tools[itemStr.toLocaleLowerCase()].id,\n prefixIcon: this.tools[itemStr.toLocaleLowerCase()].icon,\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand\n };\n }\n }\n }\n };\n /**\n * @param {string} tbItems - specifies the string value\n * @param {string} container - specifies the container value\n * @returns {ItemModel} - retunrs the model element\n * @hidden\n\n */\n BaseToolbar.prototype.getItems = function (tbItems, container) {\n var _this = this;\n if (this.parent.toolbarSettings.items.length < 1) {\n return [];\n }\n var items = [];\n var _loop_1 = function (item) {\n switch (typeof item) {\n case 'string':\n items.push(this_1.getObject(item, container));\n break;\n default:\n if (!isNullOrUndefined(item.click)) {\n var proxy_1 = item;\n var callback_1 = proxy_1.click;\n proxy_1.click = function () {\n if (proxy_1.undo && _this.parent.formatter.getUndoRedoStack().length === 0) {\n _this.parent.formatter.saveData();\n }\n callback_1.call(_this);\n if ((_this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1].text.trim()\n === _this.parent.inputElement.innerHTML.trim())) {\n return;\n }\n if (proxy_1.undo) {\n _this.parent.formatter.saveData();\n }\n };\n }\n items.push(item);\n }\n };\n var this_1 = this;\n for (var _i = 0, tbItems_1 = tbItems; _i < tbItems_1.length; _i++) {\n var item = tbItems_1[_i];\n _loop_1(item);\n }\n for (var num = 0; num < items.length; num++) {\n var tooltipText = items[num].tooltipText;\n var shortCutKey = void 0;\n if (windowKeys[\"\" + tooltipText]) {\n shortCutKey = Browser.isDevice && isIDevice() ? windowKeys[\"\" + tooltipText].replace('Ctrl', 'Cmd') : windowKeys[\"\" + tooltipText];\n }\n else {\n shortCutKey = tooltipText;\n }\n if (shortCutKey) {\n items[num].tooltipText = (tooltipText !== shortCutKey) ? tooltipText + ' (' + shortCutKey + ')' : tooltipText;\n }\n }\n return items;\n };\n BaseToolbar.prototype.getToolbarOptions = function (args) {\n return {\n target: args.target,\n rteToolbarObj: this,\n items: this.getItems(args.items, args.container),\n overflowMode: args.mode,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n cssClass: args.cssClass\n };\n };\n /**\n * render method\n *\n * @param {IToolbarRenderOptions} args - specifies the toolbar options\n * @returns {void}\n * @hidden\n\n */\n BaseToolbar.prototype.render = function (args) {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.toolbarRenderer.renderToolbar(this.getToolbarOptions(args));\n };\n return BaseToolbar;\n}());\nexport { BaseToolbar };\n","import { addClass, isNullOrUndefined, removeClass, select, closest } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport { getIndex } from '../base/util';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { getDropDownValue, getFormattedFontSize, getTooltipText } from '../base/util';\nimport * as model from '../models/items';\nimport { dispatchEvent } from '../base/util';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar DropDownButtons = /** @class */ (function () {\n function DropDownButtons(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n DropDownButtons.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n DropDownButtons.prototype.beforeRender = function (args) {\n var item = args.item;\n if (item.cssClass) {\n addClass([args.element], item.cssClass);\n }\n if (item.command === 'Alignments' || item.subCommand === 'JustifyLeft'\n || item.subCommand === 'JustifyRight' || item.subCommand === 'JustifyCenter') {\n args.element.setAttribute('title', getTooltipText(item.subCommand.toLocaleLowerCase(), this.locator));\n }\n };\n DropDownButtons.prototype.dropdownContent = function (width, type, content) {\n return ('' +\n '' + content + '');\n };\n /**\n * renderDropDowns method\n *\n * @param {IDropDownRenderArgs} args - specifies the arguments\n * @returns {void}\n * @hidden\n\n */\n DropDownButtons.prototype.renderDropDowns = function (args) {\n var _this = this;\n this.initializeInstance();\n var type = args.containerType;\n var tbElement = args.container;\n model.templateItems.forEach(function (item) {\n var targetElement = undefined;\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'numberformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_NumberFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatOLItem = _this.parent.numberFormatList.types.slice();\n formatOLItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'NumberFormatList', enumerable: true }\n });\n });\n _this.numberFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-order-list' + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n itemName: 'NumberFormatList', items: formatOLItem, element: targetElement\n });\n break;\n }\n case 'bulletformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_BulletFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatULItem = _this.parent.bulletFormatList.types.slice();\n formatULItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'BulletFormatList', enumerable: true }\n });\n });\n _this.bulletFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-unorder-list' + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS,\n itemName: 'BulletFormatList', items: formatULItem, element: targetElement\n });\n break;\n }\n case 'formats': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Formats', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatItem = _this.parent.format.types.slice();\n formatItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Formats', enumerable: true }, subCommand: { value: item.value, enumerable: true }\n });\n });\n var formatContent = isNullOrUndefined(_this.parent.format.default) ? formatItem[0].text :\n _this.parent.format.default;\n _this.formatDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-formats e-icons' : ''),\n content: _this.dropdownContent(_this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItem, formatContent, 'text', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FORMATS_TB_BTN,\n itemName: 'Formats', items: formatItem, element: targetElement\n });\n break;\n }\n case 'fontname': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontName', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontItem = _this.parent.fontFamily.items.slice();\n fontItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontName', enumerable: true }\n });\n });\n var fontNameContent = isNullOrUndefined(_this.parent.fontFamily.default) ? fontItem[0].text :\n _this.parent.fontFamily.default;\n _this.fontNameDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-font-name e-icons' : ''),\n content: _this.dropdownContent(_this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItem, fontNameContent, 'text', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FONT_NAME_TB_BTN,\n itemName: 'FontName', items: fontItem, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontFamily.default)) {\n _this.getEditNode().style.fontFamily = _this.parent.fontFamily.default;\n }\n break;\n }\n case 'fontsize': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontSize', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontsize = _this.parent.fontSize.items.slice();\n fontsize.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontSize', enumerable: true }\n });\n });\n var fontSizeContent = isNullOrUndefined(_this.parent.fontSize.default) ? fontsize[1].text :\n _this.parent.fontSize.default;\n _this.fontSizeDropDown = _this.toolbarRenderer.renderDropDownButton({\n content: _this.dropdownContent(_this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text'))),\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_FONT_SIZE_TB_BTN,\n itemName: 'FontSize', items: fontsize, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontSize.default)) {\n _this.getEditNode().style.fontSize = _this.parent.fontSize.default;\n }\n break;\n }\n case 'alignments':\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Alignments', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n _this.alignDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_ALIGN_TB_BTN,\n itemName: 'Alignments', items: model.alignmentItems, element: targetElement\n });\n break;\n case 'align':\n case 'videoalign':\n _this.renderAlignmentDropDown(type, tbElement, targetElement, item);\n break;\n case 'display':\n case 'audiolayoutoption':\n case 'videolayoutoption':\n _this.renderDisplayDropDown(type, tbElement, targetElement, item);\n break;\n case 'tablerows':\n _this.rowDropDown(type, tbElement, targetElement);\n break;\n case 'tablecolumns':\n _this.columnDropDown(type, tbElement, targetElement);\n break;\n case 'tablecell':\n _this.cellDropDown(type, tbElement, targetElement);\n break;\n case 'tablecellverticalalign':\n _this.verticalAlignDropDown(type, tbElement, targetElement);\n break;\n case 'styles':\n _this.tableStylesDropDown(type, tbElement, targetElement);\n break;\n }\n }\n });\n if (this.parent.inlineMode.enable) {\n this.setCssClass({ cssClass: this.parent.cssClass });\n }\n };\n DropDownButtons.prototype.getUpdateItems = function (items, value) {\n var dropDownItems = items.slice();\n dropDownItems.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: (value === 'Format' ? 'Formats' : 'Font'), enumerable: true },\n subCommand: { value: (value === 'Format' ? item.value : value), enumerable: true }\n });\n });\n return dropDownItems;\n };\n DropDownButtons.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var type;\n var content;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontFamily':\n if (this.fontNameDropDown) {\n for (var _b = 0, _c = Object.keys(newProp.fontFamily); _b < _c.length; _b++) {\n var fontFamily = _c[_b];\n switch (fontFamily) {\n case 'default':\n case 'width': {\n var fontItems = this.fontNameDropDown.items;\n type = !isNullOrUndefined(closest(this.fontNameDropDown.element, '.' + classes.CLS_QUICK_TB)) ?\n 'quick' : 'toolbar';\n var fontNameContent = isNullOrUndefined(this.parent.fontFamily.default) ? fontItems[0].text :\n this.parent.fontFamily.default;\n content = this.dropdownContent(this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItems, fontNameContent, 'text', 'text')));\n this.fontNameDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontFamily.default)) {\n this.getEditNode().style.fontFamily = this.parent.fontFamily.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-family');\n }\n break;\n }\n case 'items':\n this.fontNameDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontFamily.items, 'FontName')\n });\n break;\n }\n }\n }\n break;\n case 'fontSize':\n if (this.fontSizeDropDown) {\n for (var _d = 0, _e = Object.keys(newProp.fontSize); _d < _e.length; _d++) {\n var fontSize = _e[_d];\n switch (fontSize) {\n case 'default':\n case 'width': {\n var fontsize = this.fontSizeDropDown.items;\n type = !isNullOrUndefined(closest(this.fontSizeDropDown.element, '.' + classes.CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var fontSizeContent = isNullOrUndefined(this.parent.fontSize.default) ? fontsize[1].text :\n this.parent.fontSize.default;\n content = this.dropdownContent(this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text')));\n this.fontSizeDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontSize.default)) {\n this.getEditNode().style.fontSize = this.parent.fontSize.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-size');\n }\n break;\n }\n case 'items':\n this.fontSizeDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontSize.items, 'FontSize')\n });\n break;\n }\n }\n }\n break;\n case 'format':\n if (this.formatDropDown) {\n for (var _f = 0, _g = Object.keys(newProp.format); _f < _g.length; _f++) {\n var format = _g[_f];\n switch (format) {\n case 'default':\n case 'width': {\n var formatItems = this.formatDropDown.items;\n type = !isNullOrUndefined(closest(this.formatDropDown.element, '.' + classes.CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var formatContent = isNullOrUndefined(this.parent.format.default) ? formatItems[0].text :\n this.parent.format.default;\n content = this.dropdownContent(this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItems, formatContent, 'text', 'text')));\n this.formatDropDown.setProperties({ content: content });\n break;\n }\n case 'types':\n this.formatDropDown.setProperties({\n items: this.getUpdateItems(newProp.format.types, 'Format')\n });\n break;\n }\n }\n }\n break;\n }\n }\n };\n DropDownButtons.prototype.getEditNode = function () {\n return this.parent.contentModule.getEditPanel();\n };\n DropDownButtons.prototype.rowDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableRows', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableRowsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-rows e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableRows',\n items: model.tableRowsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.columnDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableColumns', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableColumnsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-columns e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableColumns',\n items: model.tableColumnsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.cellDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCell', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableRowsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableCell',\n items: model.tableCellItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.verticalAlignDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCellVerticalAlign', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableCellVerticalAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell-ver-align e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'TableCellVerticalAlign',\n items: model.TableCellVerticalAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.renderDisplayDropDown = function (type, tbElement, targetElement, item) {\n targetElement = select('#' + this.parent.getID() + '_' + type + (item === 'display' ? '_Display' : item === 'videolayoutoption' ? '_VideoLayoutOption' : '_AudioLayoutOption'), tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.displayDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: item === 'display' ? 'e-display e-icons' : item === 'videolayoutoption' ? 'e-video-display e-icons' : 'e-audio-display e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ITEMS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: item === 'display' ? 'Display' : item === 'videolayoutoption' ? 'VideoLayoutOption' : 'AudioLayoutOption',\n items: item === 'display' ? model.imageDisplayItems : item === 'videolayoutoption' ? model.videoLayoutOptionItems : model.audioLayoutOptionItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.renderAlignmentDropDown = function (type, tbElement, targetElement, item) {\n targetElement = select('#' + this.parent.getID() + '_' + type + (item === 'align' ? '_Align' : '_VideoAlign'), tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ICONS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: item === 'align' ? 'Align' : 'VideoAlign',\n items: item === 'align' ? model.imageAlignItems : model.videoAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.tableStylesDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_Styles', tbElement);\n if (targetElement.classList.contains(classes.CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-style e-icons',\n cssClass: classes.CLS_DROPDOWN_POPUP + ' ' + classes.CLS_DROPDOWN_ICONS + ' ' + classes.CLS_QUICK_DROPDOWN,\n itemName: 'Styles',\n items: this.parent.tableSettings.styles,\n element: targetElement\n });\n };\n DropDownButtons.prototype.removeDropDownClasses = function (target) {\n removeClass([target], [\n classes.CLS_DROPDOWN_BTN,\n classes.CLS_DROPDOWN_POPUP,\n classes.CLS_DROPDOWN_ICONS,\n classes.CLS_DROPDOWN_ITEMS\n ]);\n };\n /**\n * destroyDropDowns method\n *\n * @returns {void}\n * @hidden\n\n */\n DropDownButtons.prototype.destroyDropDowns = function () {\n if (this.formatDropDown) {\n this.removeDropDownClasses(this.formatDropDown.element);\n this.formatDropDown.destroy();\n }\n if (this.fontNameDropDown) {\n this.removeDropDownClasses(this.fontNameDropDown.element);\n this.fontNameDropDown.destroy();\n }\n if (this.fontSizeDropDown) {\n this.removeDropDownClasses(this.fontSizeDropDown.element);\n this.fontSizeDropDown.destroy();\n }\n if (this.alignDropDown) {\n this.removeDropDownClasses(this.alignDropDown.element);\n this.alignDropDown.destroy();\n }\n if (this.imageAlignDropDown) {\n this.removeDropDownClasses(this.imageAlignDropDown.element);\n this.imageAlignDropDown.destroy();\n }\n if (this.displayDropDown) {\n this.removeDropDownClasses(this.displayDropDown.element);\n this.displayDropDown.destroy();\n }\n if (this.tableRowsDropDown) {\n this.removeDropDownClasses(this.tableRowsDropDown.element);\n this.tableRowsDropDown.destroy();\n }\n if (this.tableColumnsDropDown) {\n this.removeDropDownClasses(this.tableColumnsDropDown.element);\n this.tableColumnsDropDown.destroy();\n }\n if (this.tableCellVerticalAlignDropDown) {\n this.removeDropDownClasses(this.tableCellVerticalAlignDropDown.element);\n this.tableCellVerticalAlignDropDown.destroy();\n }\n if (this.numberFormatListDropDown) {\n this.removeDropDownClasses(this.numberFormatListDropDown.element);\n this.numberFormatListDropDown.destroy();\n }\n if (this.bulletFormatListDropDown) {\n this.removeDropDownClasses(this.bulletFormatListDropDown.element);\n this.bulletFormatListDropDown.destroy();\n }\n };\n DropDownButtons.prototype.setRtl = function (args) {\n if (this.formatDropDown) {\n this.formatDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontNameDropDown) {\n this.fontNameDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontSizeDropDown) {\n this.fontSizeDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.alignDropDown) {\n this.alignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageAlignDropDown) {\n this.imageAlignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.displayDropDown) {\n this.displayDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.numberFormatListDropDown) {\n this.numberFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.bulletFormatListDropDown) {\n this.bulletFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n DropDownButtons.prototype.updateCss = function (dropDownObj, e) {\n if (dropDownObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n DropDownButtons.prototype.setCssClass = function (e) {\n var dropDownObj = [\n this.formatDropDown, this.fontNameDropDown, this.fontSizeDropDown, this.alignDropDown, this.imageAlignDropDown,\n this.displayDropDown, this.numberFormatListDropDown, this.bulletFormatListDropDown, this.tableRowsDropDown,\n this.tableColumnsDropDown, this.tableCellVerticalAlignDropDown\n ];\n for (var i = 0; i < dropDownObj.length; i++) {\n this.updateCss(dropDownObj[i], e);\n }\n };\n DropDownButtons.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.beforeDropDownItemRender, this.beforeRender, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n };\n DropDownButtons.prototype.onIframeMouseDown = function () {\n dispatchEvent(document, 'mousedown');\n };\n DropDownButtons.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.beforeDropDownItemRender, this.beforeRender);\n this.parent.off(events.destroy, this.removeEventListener);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.bindCssClass, this.setCssClass);\n };\n return DropDownButtons;\n}());\nexport { DropDownButtons };\n","import { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { ServiceLocator } from '../services/service-locator';\nimport { RendererFactory } from '../services/renderer-factory';\n/**\n * `ToolbarAction` module is used to toolbar click action\n */\nvar ToolbarAction = /** @class */ (function () {\n function ToolbarAction(parent) {\n this.parent = parent;\n this.addEventListener();\n this.serviceLocator = new ServiceLocator;\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n }\n ToolbarAction.prototype.addEventListener = function () {\n this.parent.on(events.toolbarClick, this.toolbarClick, this);\n this.parent.on(events.dropDownSelect, this.dropDownSelect, this);\n this.parent.on(events.colorPickerChanged, this.renderSelection, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n ToolbarAction.prototype.toolbarClick = function (args) {\n if (isNOU(args.item)) {\n return;\n }\n if (!isNOU(args.item.controlParent)) {\n // eslint-disable-next-line\n var activeEle = args.item.controlParent\n .activeEle;\n if (activeEle) {\n activeEle.tabIndex = -1;\n }\n }\n if (args.item.command === 'NumberFormatList' || args.item.command === 'BulletFormatList') {\n if (args.originalEvent.target.classList.contains('e-order-list') || args.originalEvent.target.classList.contains('e-unorder-list')) {\n args.item.command = 'Lists';\n args.item.subCommand = args.item.subCommand === 'NumberFormatList' ? 'OL' : 'UL';\n }\n }\n if (args.item.command === 'Lists') {\n if (args.originalEvent.target.classList.contains('e-caret') &&\n (args.originalEvent.target.parentElement.classList.contains('e-rte-bulletformatlist-dropdown') || args.originalEvent.target.parentElement.classList.contains('e-rte-numberformatlist-dropdown'))) {\n args.item.command = args.item.subCommand = null;\n }\n }\n this.parent.notify(events.htmlToolbarClick, args);\n this.parent.notify(events.markdownToolbarClick, args);\n };\n ToolbarAction.prototype.dropDownSelect = function (e) {\n this.parent.notify(events.selectionRestore, {});\n if (!(document.body.contains(document.body.querySelector('.e-rte-quick-toolbar'))\n && e.item && (e.item.command === 'Images' || e.item.command === 'Audios' || e.item.command === 'Videos' ||\n e.item.command === 'VideoLayoutOption' || e.item.command === 'Display' || e.item.command === 'Table'))) {\n var value = e.item.controlParent && this.parent.quickToolbarModule && this.parent.quickToolbarModule.tableQTBar\n && this.parent.quickToolbarModule.tableQTBar.element.contains(e.item.controlParent.element) ? 'Table' : null;\n if (e.item.command === 'Lists') {\n var listItem = { listStyle: e.item.value, listImage: e.item.listImage, type: e.item.subCommand };\n this.parent.formatter.process(this.parent, e, e.originalEvent, listItem);\n }\n else {\n this.parent.formatter.process(this.parent, e, e.originalEvent, value);\n }\n }\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.renderSelection = function (args) {\n this.parent.notify(events.selectionRestore, {});\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n this.parent.notify(events.selectionSave, {});\n };\n ToolbarAction.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarClick, this.toolbarClick);\n this.parent.off(events.dropDownSelect, this.dropDownSelect);\n this.parent.off(events.colorPickerChanged, this.renderSelection);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n return ToolbarAction;\n}());\nexport { ToolbarAction };\n","import { addClass, Browser, EventHandler, detach, removeClass, select, selectAll, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { RenderType, ToolbarType } from '../base/enum';\nimport { setToolbarStatus, updateUndoRedoStatus, getTBarItemsIndex, getCollection, toObjectLowerCase, isIDevice, getTooltipText } from '../base/util';\nimport { updateDropDownFontFormatLocale } from '../base/util';\nimport * as model from '../models/items';\nimport { ToolbarRenderer } from '../renderer/toolbar-renderer';\nimport { BaseToolbar } from './base-toolbar';\nimport { DropDownButtons } from './dropdown-buttons';\nimport { ToolbarAction } from './toolbar-action';\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.parent = parent;\n this.isToolbar = false;\n this.locator = serviceLocator;\n this.isTransformChild = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n model.updateDropDownLocale(this.parent);\n updateDropDownFontFormatLocale(this.parent);\n this.renderFactory.addRenderer(RenderType.Toolbar, new ToolbarRenderer(this.parent));\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.baseToolbar = new BaseToolbar(this.parent, this.locator);\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, model.tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = model.tools;\n }\n }\n Toolbar.prototype.initializeInstance = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.editableElement = this.contentRenderer.getEditPanel();\n this.editPanel = this.contentRenderer.getPanel();\n };\n Toolbar.prototype.toolbarBindEvent = function () {\n if (!this.parent.inlineMode.enable) {\n this.keyBoardModule = new KeyboardEvents(this.getToolbarElement(), {\n keyAction: this.toolBarKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n }\n };\n Toolbar.prototype.toolBarKeyDown = function (e) {\n switch (e.action) {\n case 'escape':\n this.parent.contentModule.getEditPanel().focus();\n break;\n }\n };\n Toolbar.prototype.createToolbarElement = function () {\n this.tbElement = this.parent.createElement('div', { id: this.parent.getID() + '_toolbar' });\n if (!Browser.isDevice && this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n else {\n if (this.parent.toolbarSettings.enableFloating && !this.parent.inlineMode.enable) {\n this.tbWrapper = this.parent.createElement('div', {\n id: this.parent.getID() + '_toolbar_wrapper',\n innerHTML: this.tbElement.outerHTML,\n className: classes.CLS_TB_WRAP\n });\n this.tbElement = this.tbWrapper.firstElementChild;\n this.parent.element.insertBefore(this.tbWrapper, this.editPanel);\n }\n else {\n this.parent.element.insertBefore(this.tbElement, this.editPanel);\n }\n }\n };\n Toolbar.prototype.getToolbarMode = function () {\n var tbMode;\n switch (this.parent.toolbarSettings.type) {\n case ToolbarType.Expand:\n tbMode = 'Extended';\n break;\n case ToolbarType.Scrollable:\n tbMode = 'Scrollable';\n break;\n default:\n tbMode = 'MultiRow';\n }\n if (isIDevice() && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tbMode = ToolbarType.Scrollable;\n }\n return tbMode;\n };\n Toolbar.prototype.checkToolbarResponsive = function (ele) {\n if (!Browser.isDevice || isIDevice()) {\n return false;\n }\n var tBarMode;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tBarMode = ToolbarType.MultiRow;\n }\n else {\n tBarMode = this.parent.toolbarSettings.type;\n }\n this.baseToolbar.render({\n container: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items,\n mode: tBarMode,\n target: ele,\n cssClass: this.parent.cssClass\n });\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([ele], ['e-rte-tb-mobile']);\n if (this.parent.inlineMode.enable) {\n this.addFixedTBarClass();\n }\n else {\n addClass([ele], [classes.CLS_TB_STATIC]);\n }\n }\n this.wireEvents();\n this.dropDownModule.renderDropDowns({\n container: ele,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n return true;\n };\n Toolbar.prototype.checkIsTransformChild = function () {\n this.isTransformChild = false;\n var transformElements = selectAll('[style*=\"transform\"]', document);\n for (var i = 0; i < transformElements.length; i++) {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(transformElements[i].contains) && transformElements[i].contains(this.parent.element)) {\n this.isTransformChild = true;\n break;\n }\n }\n };\n Toolbar.prototype.toggleFloatClass = function (e) {\n var topValue;\n var isBody = false;\n var isFloat = false;\n var scrollParent;\n var floatOffset = this.parent.floatingToolbarOffset;\n if (e && this.parent.iframeSettings.enable && this.parent.inputElement.ownerDocument === e.target) {\n scrollParent = e.target.body;\n }\n else if (e && e.target !== document) {\n scrollParent = e.target;\n }\n else {\n isBody = true;\n scrollParent = document.body;\n }\n var tbHeight = this.getToolbarHeight() + this.getExpandTBarPopHeight();\n if (this.isTransformChild) {\n topValue = 0;\n var scrollParentRelativeTop = 0;\n var trgHeight = this.parent.element.offsetHeight;\n if (isBody) {\n var bodyStyle = window.getComputedStyle(scrollParent);\n scrollParentRelativeTop = parseFloat(bodyStyle.marginTop.split('px')[0]) + parseFloat(bodyStyle.paddingTop.split('px')[0]);\n }\n var targetTop = this.parent.element.getBoundingClientRect().top;\n var scrollParentYOffset = (Browser.isMSPointer && isBody) ? window.pageYOffset : scrollParent.parentElement.scrollTop;\n var scrollParentRect = scrollParent.getBoundingClientRect();\n var scrollParentTop = (!isBody) ? scrollParentRect.top : (scrollParentRect.top + scrollParentYOffset);\n var outOfRange = ((targetTop - ((!isBody) ? scrollParentTop : 0))\n + trgHeight > tbHeight + floatOffset) ? false : true;\n if (targetTop > (scrollParentTop + floatOffset) || targetTop < -trgHeight || ((targetTop < 0) ? outOfRange : false)) {\n isFloat = false;\n removeClass([this.tbElement], [classes.CLS_TB_ABS_FLOAT]);\n }\n else if (targetTop < (scrollParentTop + floatOffset)) {\n if (targetTop < 0) {\n topValue = (-targetTop) + scrollParentTop;\n }\n else {\n topValue = scrollParentTop - targetTop;\n }\n topValue = (isBody) ? topValue - scrollParentRelativeTop : topValue;\n addClass([this.tbElement], [classes.CLS_TB_ABS_FLOAT]);\n isFloat = true;\n }\n }\n else {\n var parent_1 = this.parent.element.getBoundingClientRect();\n if (window.innerHeight < parent_1.top) {\n return;\n }\n topValue = (e && e.target !== document) ? scrollParent.getBoundingClientRect().top : 0;\n if ((parent_1.bottom < (floatOffset + tbHeight + topValue)) || parent_1.bottom < 0 || parent_1.top > floatOffset + topValue) {\n isFloat = false;\n }\n else if (parent_1.top < floatOffset || parent_1.top < floatOffset + topValue) {\n isFloat = true;\n }\n }\n if (!isFloat) {\n removeClass([this.tbElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement, { top: 0 + 'px', width: '100%' });\n }\n else {\n addClass([this.tbElement], [classes.CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement, { width: this.parent.element.offsetWidth + 'px', top: (floatOffset + topValue) + 'px' });\n }\n };\n Toolbar.prototype.renderToolbar = function () {\n this.initializeInstance();\n this.createToolbarElement();\n if (this.checkToolbarResponsive(this.tbElement)) {\n return;\n }\n if (this.parent.inlineMode.enable) {\n this.parent.notify(events.renderInlineToolbar, {});\n }\n else {\n this.baseToolbar.render({\n container: 'toolbar',\n items: this.parent.toolbarSettings.items,\n mode: this.getToolbarMode(),\n target: this.tbElement,\n cssClass: this.parent.cssClass\n });\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating) {\n this.checkIsTransformChild();\n this.toggleFloatClass();\n }\n addClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n }\n }\n }\n this.wireEvents();\n if (this.parent.inlineMode.enable && !isIDevice()) {\n this.addFixedTBarClass();\n }\n if (!this.parent.inlineMode.enable) {\n this.dropDownModule.renderDropDowns({\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(events.renderColorPicker, {\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.refreshToolbarOverflow();\n }\n var divEle = this.parent.element.querySelector('.e-rte-srctextarea');\n var iframeEle = this.parent.element.querySelector('.e-source-content');\n if ((!this.parent.iframeSettings.enable && (!isNOU(divEle) && divEle.style.display === 'block')) ||\n (this.parent.iframeSettings.enable && (!isNOU(iframeEle) && iframeEle.style.display === 'block'))) {\n this.parent.notify(events.updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n }\n };\n /**\n * addFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addFixedTBarClass = function () {\n addClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n /**\n * removeFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeFixedTBarClass = function () {\n removeClass([this.tbElement], [classes.CLS_TB_FIXED]);\n };\n Toolbar.prototype.showFixedTBar = function () {\n addClass([this.tbElement], [classes.CLS_SHOW]);\n if (Browser.isIos) {\n addClass([this.tbElement], [classes.CLS_TB_IOS_FIX]);\n }\n };\n Toolbar.prototype.hideFixedTBar = function () {\n // eslint-disable-next-line\n (!this.isToolbar) ? removeClass([this.tbElement], [classes.CLS_SHOW, classes.CLS_TB_IOS_FIX]) : this.isToolbar = false;\n };\n /**\n * updateItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.updateItem = function (args) {\n var item = this.tools[args.updateItem.toLocaleLowerCase()];\n if (this.parent.locale !== 'en-US') {\n item.tooltip = getTooltipText(args.updateItem.toLocaleLowerCase(), this.locator);\n }\n var trgItem = this.tools[args.targetItem.toLocaleLowerCase()];\n var index = getTBarItemsIndex(getCollection(trgItem.subCommand), args.baseToolbar.toolbarObj.items)[0];\n if (!isNOU(index)) {\n var prefixId = this.parent.inlineMode.enable ? '_quick_' : '_toolbar_';\n args.baseToolbar.toolbarObj.items[index].id = this.parent.getID() + prefixId + item.id;\n args.baseToolbar.toolbarObj.items[index].prefixIcon = item.icon;\n args.baseToolbar.toolbarObj.items[index].tooltipText = item.tooltip;\n args.baseToolbar.toolbarObj.items[index].subCommand = item.subCommand;\n args.baseToolbar.toolbarObj.dataBind();\n args.baseToolbar.toolbarObj.refreshOverflow();\n }\n else {\n this.addTBarItem(args, 0);\n }\n };\n Toolbar.prototype.updateToolbarStatus = function (args) {\n if (!this.tbElement || (this.parent.inlineMode.enable && (isIDevice() || !Browser.isDevice))) {\n return;\n }\n var options = {\n args: args,\n dropDownModule: this.dropDownModule,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.tbElement),\n tbItems: this.baseToolbar.toolbarObj.items\n };\n setToolbarStatus(options, (this.parent.inlineMode.enable ? true : false), this.parent);\n };\n Toolbar.prototype.fullScreen = function (e) {\n this.parent.fullScreenModule.showFullScreen(e);\n };\n Toolbar.prototype.hideScreen = function (e) {\n this.parent.fullScreenModule.hideFullScreen(e);\n };\n /**\n * getBaseToolbar method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getBaseToolbar = function () {\n return this.baseToolbar;\n };\n /**\n * addTBarItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @param {number} index - specifies the index value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.addTBarItem = function (args, index) {\n args.baseToolbar.toolbarObj.addItems([args.baseToolbar.getObject(args.updateItem, 'toolbar')], index);\n };\n /**\n * enableTBarItems method\n *\n * @param {BaseToolbar} baseToolbar - specifies the toolbar.\n * @param {string} items - specifies the string value.\n * @param {boolean} isEnable - specifies the boolean value.\n * @param {boolean} muteToolbarUpdate - specifies the toolbar.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.enableTBarItems = function (baseToolbar, items, isEnable, muteToolbarUpdate) {\n var trgItems = getTBarItemsIndex(getCollection(items), baseToolbar.toolbarObj.items);\n this.tbItems = selectAll('.' + classes.CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n for (var i = 0; i < trgItems.length; i++) {\n var item = this.tbItems[trgItems[i]];\n if (item) {\n baseToolbar.toolbarObj.enableItems(item, isEnable);\n }\n }\n if (!select('.e-rte-srctextarea', this.parent.element) && !muteToolbarUpdate) {\n updateUndoRedoStatus(baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * removeTBarItems method\n *\n * @param {string} items - specifies the string value.\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.removeTBarItems = function (items) {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var trgItems = getTBarItemsIndex(getCollection(items), this.baseToolbar.toolbarObj.items);\n this.tbItems = (this.parent.inlineMode.enable) ? selectAll('.' + classes.CLS_TB_ITEM, this.baseToolbar.toolbarObj.element)\n : selectAll('.' + classes.CLS_TB_ITEM, this.parent.element);\n for (var i = 0; i < trgItems.length; i++) {\n this.baseToolbar.toolbarObj.removeItems(this.tbItems[trgItems[i]]);\n }\n };\n /**\n * getExpandTBarPopHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getExpandTBarPopHeight = function () {\n var popHeight = 0;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand && this.tbElement.classList.contains('e-extended-toolbar')) {\n var expandPopup = select('.e-toolbar-extended', this.tbElement);\n if (expandPopup && this.tbElement.classList.contains('e-expand-open')\n || expandPopup && expandPopup.classList.contains('e-popup-open')) {\n addClass([expandPopup], [classes.CLS_VISIBLE]);\n popHeight = popHeight + expandPopup.offsetHeight;\n removeClass([expandPopup], [classes.CLS_VISIBLE]);\n }\n else {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n }\n return popHeight;\n };\n /**\n * getToolbarHeight method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarHeight = function () {\n return this.tbElement.offsetHeight;\n };\n /**\n * getToolbarElement method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.getToolbarElement = function () {\n return select('.' + classes.CLS_TOOLBAR, this.parent.element);\n };\n /**\n * refreshToolbarOverflow method\n *\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.refreshToolbarOverflow = function () {\n this.parent.element.classList.remove(classes.CLS_RTL);\n this.baseToolbar.toolbarObj.refreshOverflow();\n if (this.parent.enableRtl) {\n this.parent.element.classList.add(classes.CLS_RTL);\n }\n };\n Toolbar.prototype.isToolbarDestroyed = function () {\n return this.baseToolbar.toolbarObj && !this.baseToolbar.toolbarObj.isDestroyed;\n };\n Toolbar.prototype.destroyToolbar = function () {\n if (this.isToolbarDestroyed()) {\n this.parent.unWireScrollElementsEvents();\n this.unWireEvents();\n this.parent.notify(events.destroyColorPicker, {});\n this.dropDownModule.destroyDropDowns();\n this.baseToolbar.toolbarObj.destroy();\n this.removeEventListener();\n removeClass([this.parent.element], [classes.CLS_RTE_TB_ENABLED]);\n removeClass([this.parent.element], [classes.CLS_RTE_EXPAND_TB]);\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (!isNullOrUndefined(tbWrapper)) {\n detach(tbWrapper);\n }\n else if (!isNullOrUndefined(tbElement)) {\n detach(tbElement);\n }\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.destroy = function () {\n if (this.isToolbarDestroyed()) {\n this.destroyToolbar();\n if (this.keyBoardModule) {\n this.keyBoardModule.destroy();\n }\n }\n };\n Toolbar.prototype.moduleDestroy = function () {\n this.parent = null;\n this.baseToolbar.parent = null;\n this.toolbarActionModule.parent = null;\n this.dropDownModule.parent = null;\n };\n Toolbar.prototype.scrollHandler = function (e) {\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating && this.getDOMVisibility(this.tbElement)) {\n this.toggleFloatClass(e.args);\n }\n }\n };\n Toolbar.prototype.getDOMVisibility = function (el) {\n if (!el.offsetParent && el.offsetWidth === 0 && el.offsetHeight === 0) {\n return false;\n }\n return true;\n };\n Toolbar.prototype.mouseDownHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.showFixedTBar();\n }\n };\n Toolbar.prototype.focusChangeHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.isToolbar = false;\n this.hideFixedTBar();\n }\n };\n Toolbar.prototype.dropDownBeforeOpenHandler = function () {\n this.isToolbar = true;\n };\n // eslint-disable-next-line\n Toolbar.prototype.tbFocusHandler = function (e) {\n var activeElm = document.activeElement;\n var isToolbaractive = closest(activeElm, '.e-rte-toolbar');\n if (activeElm === this.parent.getToolbarElement() || isToolbaractive === this.parent.getToolbarElement()) {\n var toolbarItem = this.parent.getToolbarElement().querySelectorAll('.e-expended-nav');\n for (var i = 0; i < toolbarItem.length; i++) {\n if (isNOU(this.parent.getToolbarElement().querySelector('.e-insert-table-btn'))) {\n toolbarItem[i].setAttribute('tabindex', '0');\n }\n else {\n toolbarItem[i].setAttribute('tabindex', '1');\n }\n }\n }\n };\n Toolbar.prototype.tbKeydownHandler = function (e) {\n if (e.target.classList.contains('e-dropdown-btn') ||\n e.target.getAttribute('id') === this.parent.getID() + '_toolbar_CreateTable') {\n e.target.setAttribute('tabindex', '0');\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (e) {\n var trg = closest(e.originalEvent.target, '.e-hor-nav');\n if (trg && this.parent.toolbarSettings.type === ToolbarType.Expand && !isNOU(trg)) {\n var extendedTbar = this.tbElement.querySelector('.e-toolbar-extended');\n if (!isNOU(extendedTbar)) {\n setStyleAttribute(extendedTbar, { maxHeight: '', display: 'block' });\n setStyleAttribute(extendedTbar, { maxHeight: extendedTbar.offsetHeight + 'px', display: '' });\n }\n if (!trg.classList.contains('e-nav-active')) {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n this.parent.setContentHeight('toolbar', false);\n }\n else {\n addClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n this.parent.setContentHeight('toolbar', true);\n }\n }\n else if (Browser.isDevice || this.parent.inlineMode.enable) {\n this.isToolbar = true;\n }\n if (isNOU(trg) && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n removeClass([this.tbElement], [classes.CLS_EXPAND_OPEN]);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n if (this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n EventHandler.add(this.tbElement, 'focusin', this.tbFocusHandler, this);\n EventHandler.add(this.tbElement, 'keydown', this.tbKeydownHandler, this);\n };\n Toolbar.prototype.unWireEvents = function () {\n EventHandler.remove(this.tbElement, 'focusin', this.tbFocusHandler);\n EventHandler.remove(this.tbElement, 'keydown', this.tbKeydownHandler);\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.dropDownModule = new DropDownButtons(this.parent, this.locator);\n this.toolbarActionModule = new ToolbarAction(this.parent);\n this.parent.on(events.initialEnd, this.renderToolbar, this);\n this.parent.on(events.scroll, this.scrollHandler, this);\n this.parent.on(events.bindOnEnd, this.toolbarBindEvent, this);\n this.parent.on(events.toolbarUpdated, this.updateToolbarStatus, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.refreshBegin, this.onRefresh, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.enableFullScreen, this.fullScreen, this);\n this.parent.on(events.disableFullScreen, this.hideScreen, this);\n this.parent.on(events.updateToolbarItem, this.updateItem, this);\n this.parent.on(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler, this);\n this.parent.on(events.expandPopupClick, this.parent.setContentHeight, this.parent);\n this.parent.on(events.focusChange, this.focusChangeHandler, this);\n this.parent.on(events.mouseDown, this.mouseDownHandler, this);\n this.parent.on(events.sourceCodeMouseDown, this.mouseDownHandler, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.on(events.toolbarClick, this.toolbarClickHandler, this);\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.renderToolbar);\n this.parent.off(events.scroll, this.scrollHandler);\n this.parent.off(events.bindOnEnd, this.toolbarBindEvent);\n this.parent.off(events.toolbarUpdated, this.updateToolbarStatus);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.refreshBegin, this.onRefresh);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.enableFullScreen, this.parent.fullScreenModule.showFullScreen);\n this.parent.off(events.disableFullScreen, this.parent.fullScreenModule.hideFullScreen);\n this.parent.off(events.updateToolbarItem, this.updateItem);\n this.parent.off(events.beforeDropDownOpen, this.dropDownBeforeOpenHandler);\n this.parent.off(events.expandPopupClick, this.parent.setContentHeight);\n this.parent.off(events.focusChange, this.focusChangeHandler);\n this.parent.off(events.mouseDown, this.mouseDownHandler);\n this.parent.off(events.sourceCodeMouseDown, this.mouseDownHandler);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.off(events.toolbarClick, this.toolbarClickHandler);\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Toolbar.prototype.setCssClass = function (e) {\n if (this.toolbarObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n Toolbar.prototype.onRefresh = function () {\n if (!this.parent.inlineMode.enable) {\n this.refreshToolbarOverflow();\n }\n this.parent.setContentHeight('', true);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n this.refreshToolbar();\n break;\n }\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.refreshToolbar();\n };\n Toolbar.prototype.refreshToolbar = function () {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var tbWrapper = select('.' + classes.CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + classes.CLS_TOOLBAR, this.parent.element);\n if (tbElement || tbWrapper) {\n this.destroyToolbar();\n }\n if (this.parent.toolbarSettings.enable) {\n this.addEventListener();\n this.renderToolbar();\n this.parent.wireScrollElementsEvents();\n if (!select('.e-rte-srctextarea', this.parent.element)) {\n updateUndoRedoStatus(this.baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n this.parent.notify(events.dynamicModule, {});\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n 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 Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea.setAttribute(key, this.htmlAttributes[\"\" + key]) : this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton && 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 if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","import { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n 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 createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = void 0;\n spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, Event, EventHandler, L10n, compile, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, append, Animation } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, KeyboardEvents, setValue, getValue, ChildProperty } from '@syncfusion/ej2-base';\nimport { Collection, Complex, Browser, Ajax, getUniqueID, closest, remove } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar CONTROL_WRAPPER = 'e-upload e-control-wrapper';\nvar INPUT_WRAPPER = 'e-file-select';\nvar DROP_AREA = 'e-file-drop';\nvar DROP_WRAPPER = 'e-file-select-wrap';\nvar LIST_PARENT = 'e-upload-files';\nvar FILE = 'e-upload-file-list';\nvar STATUS = 'e-file-status';\nvar ACTION_BUTTONS = 'e-upload-actions';\nvar UPLOAD_BUTTONS = 'e-file-upload-btn e-css e-btn e-flat e-primary';\nvar CLEAR_BUTTONS = 'e-file-clear-btn e-css e-btn e-flat';\nvar FILE_NAME = 'e-file-name';\nvar FILE_TYPE = 'e-file-type';\nvar FILE_SIZE = 'e-file-size';\nvar REMOVE_ICON = 'e-file-remove-btn';\nvar DELETE_ICON = 'e-file-delete-btn';\nvar SPINNER_PANE = 'e-spinner-pane';\nvar ABORT_ICON = 'e-file-abort-btn';\nvar RETRY_ICON = 'e-file-reload-btn';\nvar DRAG_HOVER = 'e-upload-drag-hover';\nvar PROGRESS_WRAPPER = 'e-upload-progress-wrap';\nvar PROGRESSBAR = 'e-upload-progress-bar';\nvar PROGRESSBAR_TEXT = 'e-progress-bar-text';\nvar UPLOAD_INPROGRESS = 'e-upload-progress';\nvar UPLOAD_SUCCESS = 'e-upload-success';\nvar UPLOAD_FAILED = 'e-upload-fails';\nvar TEXT_CONTAINER = 'e-file-container';\nvar VALIDATION_FAILS = 'e-validation-fails';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-disabled';\nvar RTL_CONTAINER = 'e-rtl-container';\nvar ICON_FOCUSED = 'e-clear-icon-focus';\nvar PROGRESS_INNER_WRAPPER = 'e-progress-inner-wrap';\nvar PAUSE_UPLOAD = 'e-file-pause-btn';\nvar RESUME_UPLOAD = 'e-file-play-btn';\nvar RESTRICT_RETRY = 'e-restrict-retry';\nvar wrapperAttr = ['title', 'style', 'class'];\nvar FORM_UPLOAD = 'e-form-upload';\nvar HIDDEN_INPUT = 'e-hidden-file-input';\nvar INVALID_FILE = 'e-file-invalid';\nvar INFORMATION = 'e-file-information';\nvar FilesProp = /** @class */ (function (_super) {\n __extends(FilesProp, _super);\n function FilesProp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], FilesProp.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], FilesProp.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], FilesProp.prototype, \"type\", void 0);\n return FilesProp;\n}(ChildProperty));\nexport { FilesProp };\nvar ButtonsProps = /** @class */ (function (_super) {\n __extends(ButtonsProps, _super);\n function ButtonsProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Browse...')\n ], ButtonsProps.prototype, \"browse\", void 0);\n __decorate([\n Property('Upload')\n ], ButtonsProps.prototype, \"upload\", void 0);\n __decorate([\n Property('Clear')\n ], ButtonsProps.prototype, \"clear\", void 0);\n return ButtonsProps;\n}(ChildProperty));\nexport { ButtonsProps };\nvar AsyncSettings = /** @class */ (function (_super) {\n __extends(AsyncSettings, _super);\n function AsyncSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], AsyncSettings.prototype, \"chunkSize\", void 0);\n __decorate([\n Property(3)\n ], AsyncSettings.prototype, \"retryCount\", void 0);\n __decorate([\n Property(500)\n ], AsyncSettings.prototype, \"retryAfterDelay\", void 0);\n return AsyncSettings;\n}(ChildProperty));\nexport { AsyncSettings };\n/**\n * The uploader component allows to upload images, documents, and other files from local to server.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Uploader = /** @class */ (function (_super) {\n __extends(Uploader, _super);\n /**\n * Triggers when change the Uploader value.\n *\n * @param {UploaderModel} options - Specifies the Uploader model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function Uploader(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialAttr = { accept: null, multiple: false, disabled: false };\n _this.uploadedFilesData = [];\n _this.base64String = [];\n _this.isForm = false;\n _this.allTypes = false;\n _this.pausedData = [];\n _this.uploadMetaData = [];\n _this.tabIndex = '0';\n _this.btnTabIndex = '0';\n _this.disableKeyboardNavigation = false;\n _this.count = -1;\n _this.actionCompleteCount = 0;\n _this.flag = true;\n _this.selectedFiles = [];\n _this.uploaderName = 'UploadFiles';\n _this.fileStreams = [];\n _this.newFileRef = 0;\n _this.isFirstFileOnSelection = false;\n _this.dragCounter = 0;\n _this.isAngular = false;\n /**\n * Get the file item(li) which are shown in file list.\n *\n * @private\n */\n _this.fileList = [];\n /**\n * Get the data of files which are shown in file list.\n *\n * @private\n */\n _this.filesData = [];\n _this.uploaderOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {UploaderModel} newProp - Returns the dynamic property value of the component.\n * @param {UploaderModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Uploader.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowedExtensions':\n this.setExtensions(this.allowedExtensions);\n this.clearAll();\n break;\n case 'enabled':\n this.setControlStatus();\n break;\n case 'multiple':\n this.setMultipleSelection();\n break;\n case 'enableRtl':\n this.setRTL();\n this.reRenderFileList();\n break;\n case 'buttons':\n this.buttons.browse = isNullOrUndefined(this.buttons.browse) ? '' : this.buttons.browse;\n this.buttons.clear = isNullOrUndefined(this.buttons.clear) ? '' : this.buttons.clear;\n this.buttons.upload = isNullOrUndefined(this.buttons.upload) ? '' : this.buttons.upload;\n this.renderButtonTemplates();\n break;\n case 'dropArea':\n this.unBindDropEvents();\n this.updateDropArea();\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHTMLAttributes(true);\n break;\n case 'files':\n this.renderPreLoadFiles();\n break;\n case 'directoryUpload':\n this.updateDirectoryAttributes();\n break;\n case 'template':\n var ejInstance = getValue('ej2_instances', this.element);\n if (ejInstance[0].isReact) {\n this.reRenderFileList();\n }\n else {\n this.clearAll();\n }\n break;\n case 'minFileSize':\n case 'maxFileSize':\n case 'autoUpload':\n this.clearAll();\n break;\n case 'sequentialUpload':\n this.clearAll();\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.setLocalizedTexts();\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n }\n }\n };\n Uploader.prototype.setLocalizedTexts = function () {\n if (isNullOrUndefined(this.template)) {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.innerText = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n if (this.uploadWrapper && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + DROP_AREA))) {\n this.uploadWrapper.querySelector('.' + DROP_AREA).innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n this.updateFileList();\n }\n };\n Uploader.prototype.getKeyValue = function (val) {\n var keyValue;\n for (var _i = 0, _a = Object.keys(this.preLocaleObj); _i < _a.length; _i++) {\n var key = _a[_i];\n if (this.preLocaleObj[\"\" + key] === val) {\n keyValue = key;\n }\n }\n return keyValue;\n };\n Uploader.prototype.updateFileList = function () {\n var element;\n /* istanbul ignore next */\n if (this.fileList.length > 0 && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + LIST_PARENT))) {\n for (var i = 0; i < this.fileList.length; i++) {\n element = this.fileList[i].querySelector('.e-file-status');\n element.innerHTML = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n this.filesData[i].status = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n if (this.fileList[i].classList.contains(UPLOAD_SUCCESS)) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('delete'));\n }\n if (this.fileList[i].querySelector('.e-file-play-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('resume'));\n }\n if (this.fileList[i].querySelector('.e-file-remove-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('remove'));\n }\n if (this.fileList[i].querySelector('.e-file-reload-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('retry'));\n }\n if (!this.autoUpload) {\n this.uploadButton.innerText = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.localizedTexts('Upload'));\n this.clearButton.innerText = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.localizedTexts('Clear'));\n }\n }\n }\n };\n Uploader.prototype.reRenderFileList = function () {\n if (this.listParent) {\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createFileList(this.filesData);\n if (this.actionButtons) {\n this.removeActionButtons();\n this.renderActionButtons();\n this.checkActionButtonStatus();\n }\n }\n };\n Uploader.prototype.preRender = function () {\n this.localeText = { Browse: 'Browse...', Clear: 'Clear', Upload: 'Upload', invalidFileName: 'File Name is not allowed',\n dropFilesHint: 'Or drop files here', invalidMaxFileSize: 'File size is too large',\n invalidMinFileSize: 'File size is too small', invalidFileType: 'File type is not allowed',\n uploadFailedMessage: 'File failed to upload', uploadSuccessMessage: 'File uploaded successfully',\n removedSuccessMessage: 'File removed successfully', removedFailedMessage: 'Unable to remove file', inProgress: 'Uploading',\n readyToUploadMessage: 'Ready to upload', abort: 'Abort', remove: 'Remove', cancel: 'Cancel', delete: 'Delete file',\n pauseUpload: 'File upload paused', pause: 'Pause', resume: 'Resume', retry: 'Retry',\n fileUploadCancel: 'File upload canceled', invalidFileSelection: 'Invalid files selected', totalFiles: 'Total files',\n size: 'Size'\n };\n this.l10n = new L10n('uploader', this.localeText, this.locale);\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n this.formRendered();\n this.updateHTMLAttrToElement();\n this.checkHTMLAttributes(false);\n var ejInstance = getValue('ej2_instances', this.element);\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-UPLOADER') {\n var inputElement = this.createElement('input', { attrs: { type: 'file' } });\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n if (this.element.attributes[index].nodeName !== 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n }\n else if (this.element.attributes[index].nodeName === 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, getUniqueID('uploader'));\n }\n inputElement.innerHTML = this.element.innerHTML;\n }\n if (!inputElement.hasAttribute('name')) {\n inputElement.setAttribute('name', 'UploadFiles');\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n /* istanbul ignore next */\n if (ejInstance[0].isPureReactComponent) {\n if (!isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.name);\n }\n else if (!isNullOrUndefined(ejInstance[0].props.id) && isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.id);\n }\n else {\n this.element.setAttribute('name', 'UploadFiles');\n }\n }\n if (isNullOrUndefined(this.element.getAttribute('name'))) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (!this.element.hasAttribute('type')) {\n this.element.setAttribute('type', 'file');\n }\n this.updateDirectoryAttributes();\n this.keyConfigs = {\n enter: 'enter'\n };\n if (this.element.hasAttribute('tabindex')) {\n this.tabIndex = this.element.getAttribute('tabindex');\n }\n this.browserName = Browser.info.name;\n this.uploaderName = this.element.getAttribute('name');\n };\n Uploader.prototype.formRendered = function () {\n var parentEle = closest(this.element, 'form');\n if (!isNullOrUndefined(parentEle)) {\n for (; parentEle && parentEle !== document.documentElement; parentEle = parentEle.parentElement) {\n if (parentEle.tagName === 'FORM') {\n this.isForm = true;\n this.formElement = parentEle;\n parentEle.setAttribute('enctype', 'multipart/form-data');\n parentEle.setAttribute('encoding', 'multipart/form-data');\n }\n }\n }\n };\n Uploader.prototype.getPersistData = function () {\n return this.addOnPersist(['filesData']);\n };\n /**\n * Return the module name of the component.\n *\n * @returns {string} Returns the component name.\n */\n Uploader.prototype.getModuleName = function () {\n return 'uploader';\n };\n Uploader.prototype.updateDirectoryAttributes = function () {\n if (this.directoryUpload) {\n this.element.setAttribute('directory', 'true');\n this.element.setAttribute('webkitdirectory', 'true');\n }\n else {\n this.element.removeAttribute('directory');\n this.element.removeAttribute('webkitdirectory');\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Uploader.prototype.render = function () {\n this.renderBrowseButton();\n this.initializeUpload();\n this.updateHTMLAttrToWrapper();\n this.wireEvents();\n this.setMultipleSelection();\n this.setExtensions(this.allowedExtensions);\n this.setRTL();\n this.renderPreLoadFiles();\n this.setControlStatus();\n this.setCSSClass();\n };\n Uploader.prototype.renderBrowseButton = function () {\n this.browseButton = this.createElement('button', { className: 'e-css e-btn', attrs: { 'type': 'button' } });\n this.browseButton.setAttribute('tabindex', this.tabIndex);\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n }\n else {\n this.browseButton.appendChild(this.buttons.browse);\n }\n this.element.setAttribute('aria-label', 'Uploader');\n };\n Uploader.prototype.renderActionButtons = function () {\n this.element.setAttribute('tabindex', '-1');\n this.actionButtons = this.createElement('div', { className: ACTION_BUTTONS });\n this.uploadButton = this.createElement('button', { className: UPLOAD_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.clearButton = this.createElement('button', { className: CLEAR_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.actionButtons.appendChild(this.clearButton);\n this.actionButtons.appendChild(this.uploadButton);\n this.renderButtonTemplates();\n this.uploadWrapper.appendChild(this.actionButtons);\n this.browseButton.blur();\n if (!this.isPreloadFiles) {\n this.uploadButton.focus();\n }\n this.wireActionButtonEvents();\n };\n /* istanbul ignore next */\n Uploader.prototype.serverActionButtonsEventBind = function (element) {\n if (element && !this.isForm) {\n this.browseButton.blur();\n this.actionButtons = element;\n this.uploadButton = this.actionButtons.querySelector('.e-file-upload-btn');\n this.clearButton = this.actionButtons.querySelector('.e-file-clear-btn');\n this.uploadButton.focus();\n this.unwireActionButtonEvents();\n this.wireActionButtonEvents();\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.wireActionButtonEvents = function () {\n EventHandler.add(this.uploadButton, 'click', this.uploadButtonClick, this);\n EventHandler.add(this.clearButton, 'click', this.clearButtonClick, this);\n };\n Uploader.prototype.unwireActionButtonEvents = function () {\n EventHandler.remove(this.uploadButton, 'click', this.uploadButtonClick);\n EventHandler.remove(this.clearButton, 'click', this.clearButtonClick);\n };\n Uploader.prototype.removeActionButtons = function () {\n if (this.actionButtons) {\n this.unwireActionButtonEvents();\n detach(this.actionButtons);\n this.actionButtons = null;\n }\n };\n Uploader.prototype.renderButtonTemplates = function () {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.textContent);\n }\n else {\n this.browseButton.innerHTML = '';\n this.browseButton.appendChild(this.buttons.browse);\n }\n if (this.uploadButton) {\n var uploadText = isNullOrUndefined(this.buttons.upload) ? 'Upload' : this.buttons.upload;\n this.buttons.upload = uploadText;\n if (typeof (this.buttons.upload) === 'string') {\n this.uploadButton.textContent = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.uploadButton.textContent);\n }\n else {\n this.uploadButton.innerHTML = '';\n this.uploadButton.appendChild(this.buttons.upload);\n }\n }\n if (this.clearButton) {\n var clearText = isNullOrUndefined(this.buttons.clear) ? 'Clear' : this.buttons.clear;\n this.buttons.clear = clearText;\n if (typeof (this.buttons.clear) === 'string') {\n this.clearButton.textContent = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.clearButton.textContent);\n }\n else {\n this.clearButton.innerHTML = '';\n this.clearButton.appendChild(this.buttons.clear);\n }\n }\n };\n Uploader.prototype.initializeUpload = function () {\n this.element.setAttribute('tabindex', '-1');\n var inputWrapper = this.createElement('span', { className: INPUT_WRAPPER });\n this.element.parentElement.insertBefore(inputWrapper, this.element);\n this.dropAreaWrapper = this.createElement('div', { className: DROP_WRAPPER });\n this.element.parentElement.insertBefore(this.dropAreaWrapper, this.element);\n inputWrapper.appendChild(this.element);\n this.dropAreaWrapper.appendChild(this.browseButton);\n this.dropAreaWrapper.appendChild(inputWrapper);\n this.uploadWrapper = this.createElement('div', { className: CONTROL_WRAPPER });\n this.dropAreaWrapper.parentElement.insertBefore(this.uploadWrapper, this.dropAreaWrapper);\n this.uploadWrapper.appendChild(this.dropAreaWrapper);\n this.setDropArea();\n };\n Uploader.prototype.renderPreLoadFiles = function () {\n if (this.files.length) {\n if (this.enablePersistence && this.filesData.length) {\n this.createFileList(this.filesData);\n return;\n }\n if (isNullOrUndefined(this.files[0].size)) {\n return;\n }\n this.isPreloadFiles = true;\n var files = [].slice.call(this.files);\n var filesData = [];\n if (!this.multiple) {\n this.clearData();\n files = [files[0]];\n }\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var data = files_1[_i];\n var fileData = {\n name: data.name + '.' + data.type.split('.')[data.type.split('.').length - 1],\n rawFile: '',\n size: data.size,\n status: this.localizedTexts('uploadSuccessMessage'),\n type: data.type,\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '2'\n };\n filesData.push(fileData);\n this.filesData.push(fileData);\n }\n this.createFileList(filesData);\n if (!this.autoUpload && this.listParent && !this.actionButtons && (!this.isForm || this.allowUpload()) && this.showFileList) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n if (this.sequentialUpload) {\n this.count = this.filesData.length - 1;\n }\n this.isPreloadFiles = false;\n }\n };\n Uploader.prototype.checkActionButtonStatus = function () {\n if (this.actionButtons) {\n var length_1 = this.uploadWrapper.querySelectorAll('.' + VALIDATION_FAILS).length +\n this.uploadWrapper.querySelectorAll('.e-upload-fails:not(.e-upload-progress)').length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_SUCCESS).length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_INPROGRESS).length;\n if (length_1 > 0 && length_1 === this.uploadWrapper.querySelectorAll('li').length) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n else {\n this.uploadButton.removeAttribute('disabled');\n }\n }\n };\n Uploader.prototype.setDropArea = function () {\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (this.dropArea) {\n this.dropZoneElement = (typeof (this.dropArea) !== 'string') ? this.dropArea :\n select(this.dropArea, document);\n var element = this.element;\n var enableDropText = false;\n while (element.parentNode) {\n element = element.parentNode;\n if (element === this.dropZoneElement) {\n enableDropText = true;\n if (!dropTextArea) {\n this.createDropTextHint();\n }\n else {\n dropTextArea.innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n }\n if (!enableDropText && dropTextArea) {\n remove(dropTextArea);\n }\n }\n else if (!isNullOrUndefined(this.uploaderOptions) && this.uploaderOptions.dropArea === undefined) {\n this.createDropTextHint();\n this.dropZoneElement = this.uploadWrapper;\n this.setProperties({ dropArea: this.uploadWrapper }, true);\n }\n this.bindDropEvents();\n };\n Uploader.prototype.updateDropArea = function () {\n if (this.dropArea) {\n this.setDropArea();\n }\n else {\n this.dropZoneElement = null;\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (dropTextArea) {\n remove(dropTextArea);\n }\n }\n };\n Uploader.prototype.createDropTextHint = function () {\n var fileDropArea = this.createElement('span', { className: DROP_AREA });\n fileDropArea.innerHTML = this.localizedTexts('dropFilesHint');\n this.dropAreaWrapper.appendChild(fileDropArea);\n };\n Uploader.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n Uploader.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + pro].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.uploadWrapper], updatedClassValues.split(' '));\n }\n }\n else if (pro === 'style') {\n var uploadStyle = this.uploadWrapper.getAttribute(pro);\n uploadStyle = !isNullOrUndefined(uploadStyle) ? (uploadStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.uploadWrapper.setAttribute(pro, uploadStyle);\n }\n else {\n this.uploadWrapper.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n Uploader.prototype.setMultipleSelection = function () {\n if (this.multiple && !this.element.hasAttribute('multiple')) {\n var newAttr = document.createAttribute('multiple');\n newAttr.value = 'multiple';\n this.element.setAttributeNode(newAttr);\n }\n else if (!this.multiple) {\n this.element.removeAttribute('multiple');\n }\n };\n Uploader.prototype.checkAutoUpload = function (fileData) {\n if (this.autoUpload) {\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.sequenceUpload(fileData);\n }\n else {\n this.upload(fileData);\n }\n this.removeActionButtons();\n }\n else if (!this.actionButtons) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.sequenceUpload = function (fileData) {\n if (this.filesData.length - fileData.length === 0 ||\n this.filesData[(this.filesData.length - fileData.length - 1)].statusCode !== '1') {\n if (this.multiple || this.count < 0) {\n ++this.count;\n }\n var isFileListCreated = this.showFileList ? false : true;\n if (typeof this.filesData[this.count] === 'object') {\n this.isFirstFileOnSelection = false;\n this.upload(this.filesData[this.count], isFileListCreated);\n if (this.filesData[this.count].statusCode === '0') {\n this.sequenceUpload(fileData);\n }\n }\n else {\n --this.count;\n }\n }\n };\n Uploader.prototype.setCSSClass = function (oldCSSClass) {\n var updatedOldCssClass = oldCSSClass;\n if (!isNullOrUndefined(oldCSSClass)) {\n updatedOldCssClass = (oldCSSClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCSSClass) && updatedOldCssClass !== '') {\n removeClass([this.uploadWrapper], updatedOldCssClass.split(' '));\n }\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(this.cssClass) && updatedCssClassValue !== '') {\n addClass([this.uploadWrapper], updatedCssClassValue.split(updatedCssClassValue.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Uploader.prototype.wireEvents = function () {\n EventHandler.add(this.browseButton, 'click', this.browseButtonClick, this);\n EventHandler.add(this.element, 'change', this.onSelectFiles, this);\n EventHandler.add(document, 'click', this.removeFocus, this);\n this.keyboardModule = new KeyboardEvents(this.uploadWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n };\n Uploader.prototype.unWireEvents = function () {\n EventHandler.remove(this.browseButton, 'click', this.browseButtonClick);\n EventHandler.remove(this.element, 'change', this.onSelectFiles);\n EventHandler.remove(document, 'click', this.removeFocus);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n Uploader.prototype.resetForm = function () {\n this.clearAll();\n };\n Uploader.prototype.keyActionHandler = function (e) {\n var targetElement = e.target;\n switch (e.action) {\n case 'enter':\n if (e.target === this.clearButton) {\n this.clearButtonClick();\n }\n else if (e.target === this.uploadButton) {\n this.uploadButtonClick();\n }\n else if (e.target === this.browseButton) {\n this.browseButtonClick();\n }\n else if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n var metaData = this.getCurrentMetaData(null, e);\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pauseUpload');\n this.abortUpload(metaData, false);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n this.resumeUpload(this.getCurrentMetaData(null, e), e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n var metaData = this.getCurrentMetaData(null, e);\n if (!isNullOrUndefined(metaData)) {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n else {\n var target = e.target.parentElement;\n var fileData = this.filesData[this.fileList.indexOf(target)];\n this.retry(fileData);\n }\n }\n else {\n this.removeFiles(e);\n if (!targetElement.classList.contains(ABORT_ICON)) {\n this.browseButton.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n break;\n }\n };\n Uploader.prototype.getCurrentMetaData = function (fileInfo, e) {\n var fileData;\n var targetMetaData;\n if (isNullOrUndefined(fileInfo)) {\n var target = e.target.parentElement;\n fileData = this.filesData[this.fileList.indexOf(target)];\n }\n else {\n fileData = fileInfo;\n }\n for (var i = 0; i < this.uploadMetaData.length; i++) {\n if (this.uploadMetaData[i].file.name === fileData.name) {\n targetMetaData = this.uploadMetaData[i];\n }\n }\n return targetMetaData;\n };\n Uploader.prototype.removeFocus = function () {\n if (this.uploadWrapper && this.listParent && this.listParent.querySelector('.' + ICON_FOCUSED)) {\n document.activeElement.blur();\n this.listParent.querySelector('.' + ICON_FOCUSED).classList.remove(ICON_FOCUSED);\n }\n };\n Uploader.prototype.browseButtonClick = function () {\n this.element.click();\n };\n Uploader.prototype.uploadButtonClick = function () {\n if (this.sequentialUpload) {\n this.sequenceUpload(this.filesData);\n }\n else {\n this.upload(this.filesData);\n }\n };\n Uploader.prototype.clearButtonClick = function () {\n this.clearAll();\n /* istanbul ignore next */\n if (this.sequentialUpload) {\n this.count = -1;\n }\n this.actionCompleteCount = 0;\n };\n Uploader.prototype.bindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.add(this.dropZoneElement, 'drop', this.dropElement, this);\n EventHandler.add(this.dropZoneElement, 'dragover', this.dragHover, this);\n EventHandler.add(this.dropZoneElement, 'dragleave', this.onDragLeave, this);\n EventHandler.add(this.dropZoneElement, 'paste', this.onPasteFile, this);\n EventHandler.add(this.dropZoneElement, 'dragenter', this.onDragEnter, this);\n }\n };\n Uploader.prototype.unBindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.remove(this.dropZoneElement, 'drop', this.dropElement);\n EventHandler.remove(this.dropZoneElement, 'dragover', this.dragHover);\n EventHandler.remove(this.dropZoneElement, 'dragleave', this.onDragLeave);\n EventHandler.remove(this.dropZoneElement, 'dragenter', this.onDragEnter);\n }\n };\n Uploader.prototype.onDragEnter = function (e) {\n if (!this.enabled) {\n return;\n }\n this.dropZoneElement.classList.add(DRAG_HOVER);\n this.dragCounter = this.dragCounter + 1;\n e.preventDefault();\n e.stopPropagation();\n };\n Uploader.prototype.onDragLeave = function () {\n if (!this.enabled) {\n return;\n }\n this.dragCounter = this.dragCounter - 1;\n if (!this.dragCounter) {\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n }\n };\n Uploader.prototype.dragHover = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.dropEffect !== 'Default') {\n e.dataTransfer.dropEffect = this.dropEffect.toLowerCase();\n }\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.dropElement = function (e) {\n this.dragCounter = 0;\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n this.onSelectFiles(e);\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.onPasteFile = function (event) {\n var item = event.clipboardData.items;\n if (event.type === 'paste' && this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = event.clipboardData.files;\n }\n if (item.length !== 1) {\n return;\n }\n var pasteFile = [].slice.call(item)[0];\n if ((pasteFile.kind === 'file') && pasteFile.type.match('^image/')) {\n this.renderSelectedFiles(event, [pasteFile.getAsFile()], false, true);\n }\n };\n Uploader.prototype.getSelectedFiles = function (index) {\n var data = [];\n var liElement = this.fileList[index];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < index; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n for (var j = startIndex; j < (startIndex + nameElements); j++) {\n data.push(allFiles[j]);\n }\n return data;\n };\n Uploader.prototype.removeFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var selectedElement = args.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var liElement = this.fileList[index];\n var formUpload = this.isFormUpload();\n var fileData = formUpload ? this.getSelectedFiles(index) : this.getFilesInArray(this.filesData[index]);\n if (isNullOrUndefined(fileData)) {\n return;\n }\n if (args.target.classList.contains(ABORT_ICON) && !formUpload) {\n fileData[0].statusCode = '5';\n if (!isNullOrUndefined(liElement)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.uploadSequential();\n }\n if (!(liElement.classList.contains(RESTRICT_RETRY))) {\n this.checkActionComplete(true);\n }\n }\n else if (!closest(args.target, '.' + SPINNER_PANE)) {\n this.remove(fileData, false, false, true, args);\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.removeFilesData = function (file, customTemplate) {\n var index;\n if (customTemplate) {\n if (!this.showFileList) {\n index = this.filesData.indexOf(file);\n this.filesData.splice(index, 1);\n }\n return;\n }\n var selectedElement = this.getLiElement(file);\n if (isNullOrUndefined(selectedElement)) {\n return;\n }\n this.element.value = '';\n detach(selectedElement);\n index = this.fileList.indexOf(selectedElement);\n this.fileList.splice(index, 1);\n this.filesData.splice(index, 1);\n if (this.fileList.length === 0 && !isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n this.removeActionButtons();\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n if (index <= this.count) {\n --this.count;\n }\n }\n };\n Uploader.prototype.removeUploadedFile = function (file, eventArgs, removeDirectly, custom) {\n var _this = this;\n var selectedFiles = file;\n var ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n e.cancel = true;\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n });\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n };\n ajax.onLoad = function (e) {\n _this.removeCompleted(e, selectedFiles, custom);\n return {};\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.removeFailed(e, selectedFiles, custom);\n return {};\n };\n ajax.send(formData);\n };\n Uploader.prototype.removingEventCallback = function (eventArgs, formData, selectedFiles, file) {\n /* istanbul ignore next */\n var name = this.element.getAttribute('name');\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement) && (!isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON)) ||\n !isNullOrUndefined(liElement.querySelector('.' + REMOVE_ICON)))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON) ?\n liElement.querySelector('.' + DELETE_ICON) :\n liElement.querySelector('.' + REMOVE_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (eventArgs.postRawFile && !isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name, selectedFiles.name);\n }\n this.updateFormData(formData, eventArgs.customFormData);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateFormData = function (formData, customData) {\n if (customData.length > 0 && customData[0]) {\n var _loop_1 = function (i) {\n var data = customData[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n formData.append(Object.keys(data)[0], value);\n };\n for (var i = 0; i < customData.length; i++) {\n _loop_1(i);\n }\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.updateCustomheader = function (request, currentRequest) {\n if (currentRequest.length > 0 && currentRequest[0]) {\n var _loop_2 = function (i) {\n var data = currentRequest[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n request.setRequestHeader(Object.keys(data)[0], value);\n };\n for (var i = 0; i < currentRequest.length; i++) {\n _loop_2(i);\n }\n }\n };\n Uploader.prototype.removeCompleted = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedSuccessMessage'), '2')\n };\n this.trigger('success', args);\n this.removeFilesData(files, customTemplate);\n var index = this.uploadedFilesData.indexOf(files);\n this.uploadedFilesData.splice(index, 1);\n this.trigger('change', { files: this.uploadedFilesData });\n }\n else {\n this.removeFailed(e, files, customTemplate);\n }\n };\n Uploader.prototype.removeFailed = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedFailedMessage'), '0')\n };\n if (!customTemplate) {\n var index = this.filesData.indexOf(files);\n var rootElement = this.fileList[index];\n if (rootElement) {\n rootElement.classList.remove(UPLOAD_SUCCESS);\n rootElement.classList.add(UPLOAD_FAILED);\n var statusElement = rootElement.querySelector('.' + STATUS);\n if (statusElement) {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(UPLOAD_FAILED);\n }\n }\n this.checkActionButtonStatus();\n }\n this.trigger('failure', args);\n var liElement = this.getLiElement(files);\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON);\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getFilesFromFolder = function (event) {\n this.filesEntries = [];\n var items = this.multiple ?\n event.dataTransfer.items : [event.dataTransfer.items[0]];\n var validDirectoryUpload = this.checkDirectoryUpload(items);\n if (!validDirectoryUpload) {\n return;\n }\n var _loop_3 = function (i) {\n var item = items[i].webkitGetAsEntry();\n if (item.isFile) {\n var files_2 = [];\n (item).file(function (fileObj) {\n var path = item.fullPath;\n files_2.push({ 'path': path, 'file': fileObj });\n });\n this_1.renderSelectedFiles(event, files_2, true);\n }\n else if (item.isDirectory) {\n this_1.traverseFileTree(item, event);\n }\n };\n var this_1 = this;\n for (var i = 0; i < items.length; i++) {\n _loop_3(i);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.checkDirectoryUpload = function (items) {\n for (var i = 0; items && i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n if (item.isDirectory) {\n return true;\n }\n }\n return false;\n };\n /* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n /* istanbul ignore next */\n Uploader.prototype.traverseFileTree = function (item, event) {\n /* eslint-enable @typescript-eslint/explicit-module-boundary-types */\n if (item.isFile) {\n this.filesEntries.push(item);\n }\n else if (item.isDirectory) {\n var directoryReader = item.createReader();\n this.readFileFromDirectory(directoryReader, event);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.readFileFromDirectory = function (directoryReader, event) {\n var _this = this;\n directoryReader.readEntries(function (entries) {\n for (var i = 0; i < entries.length; i++) {\n _this.traverseFileTree(entries[i], event);\n }\n _this.pushFilesEntries(event);\n if (entries.length) {\n _this.readFileFromDirectory(directoryReader);\n }\n });\n };\n Uploader.prototype.pushFilesEntries = function (event) {\n var _this = this;\n var files = [];\n var _loop_4 = function (i) {\n this_2.filesEntries[i].file(function (fileObj) {\n if (_this.filesEntries.length) {\n var path = _this.filesEntries[i].fullPath;\n files.push({ 'path': path, 'file': fileObj });\n if (i === _this.filesEntries.length - 1) {\n _this.filesEntries = [];\n _this.renderSelectedFiles(event, files, true);\n }\n }\n });\n };\n var this_2 = this;\n for (var i = 0; i < this.filesEntries.length; i++) {\n _loop_4(i);\n }\n };\n Uploader.prototype.onSelectFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var targetFiles;\n /* istanbul ignore next */\n if (args.type === 'drop') {\n if (this.directoryUpload) {\n this.getFilesFromFolder(args);\n }\n else {\n var files = this.sortFilesList = args.dataTransfer.files;\n if (this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = files;\n }\n if (files.length > 0) {\n targetFiles = this.multiple ? this.sortFileList(files) : [files[0]];\n this.renderSelectedFiles(args, targetFiles);\n }\n }\n }\n else {\n targetFiles = [].slice.call(args.target.files);\n this.renderSelectedFiles(args, targetFiles);\n }\n if (this.isAngular) {\n args.stopPropagation();\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getBase64 = function (file) {\n return new Promise(function (resolve, reject) {\n var fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n fileReader.onload = function () { return resolve(fileReader.result); };\n fileReader.onerror = function (error) { return reject(error); };\n });\n };\n /* istanbul ignore next */\n /* tslint:ignore */\n Uploader.prototype.renderSelectedFiles = function (args, targetFiles, directory, paste) {\n var _this = this;\n this.base64String = [];\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n isModified: false,\n modifiedFilesData: [],\n progressInterval: '',\n isCanceled: false,\n currentRequest: null,\n customFormData: null\n };\n /* istanbul ignore next */\n if (targetFiles.length < 1) {\n eventArgs.isCanceled = true;\n this.trigger('selected', eventArgs);\n return;\n }\n this.flag = true;\n var fileData = [];\n if (!this.multiple) {\n this.clearData(true);\n targetFiles = [targetFiles[0]];\n }\n for (var i = 0; i < targetFiles.length; i++) {\n var file = directory ? targetFiles[i].file : targetFiles[i];\n this.updateInitialFileDetails(args, targetFiles, file, i, fileData, directory, paste);\n }\n eventArgs.filesData = fileData;\n if (this.allowedExtensions.indexOf('*') > -1) {\n this.allTypes = true;\n }\n if (this.enableHtmlSanitizer) {\n for (var i = 0; i < fileData.length; i++) {\n var sanitizeFile = SanitizeHtmlHelper.beforeSanitize();\n var sanitizeFileName = SanitizeHtmlHelper.serializeValue(sanitizeFile, fileData[parseInt(i.toString())].name);\n if (sanitizeFileName !== fileData[parseInt(i.toString())].name) {\n var encodedFileName = targetFiles[parseInt(i.toString())].name.replace(/[\\u00A0-\\u9999<>\\&]/g, function (i) {\n return '&#' + i.charCodeAt(0) + ';';\n });\n fileData[parseInt(i.toString())].name = encodedFileName;\n fileData[parseInt(i.toString())].status = this.localizedTexts('invalidFileName');\n fileData[parseInt(i.toString())].statusCode = '0';\n }\n }\n }\n if (!this.allTypes) {\n fileData = this.checkExtension(fileData);\n }\n this.trigger('selected', eventArgs, function (eventArgs) {\n _this._internalRenderSelect(eventArgs, fileData);\n });\n };\n Uploader.prototype.updateInitialFileDetails = function (args, \n // eslint-disable-next-line @typescript-eslint/indent\n targetFiles, file, i, fileData, directory, paste) {\n var fileName = directory ? targetFiles[i].path.substring(1, targetFiles[i].path.length) : paste ?\n getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name) :\n this.directoryUpload ? targetFiles[i].webkitRelativePath : file.name;\n var fileDetails = {\n name: fileName,\n rawFile: file,\n size: file.size,\n status: this.localizedTexts('readyToUploadMessage'),\n type: this.getFileType(file.name),\n validationMessages: this.validatedFileSize(file.size),\n statusCode: '1',\n id: getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name)\n };\n /* istanbul ignore next */\n if (paste) {\n fileDetails.fileSource = 'paste';\n }\n fileDetails.status = fileDetails.validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n fileDetails.validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : fileDetails.status;\n if (fileDetails.validationMessages.minSize !== '' || fileDetails.validationMessages.maxSize !== '') {\n fileDetails.statusCode = '0';\n }\n fileData.push(fileDetails);\n };\n Uploader.prototype._internalRenderSelect = function (eventArgs, fileData) {\n if (!eventArgs.cancel) {\n /* istanbul ignore next */\n this.selectedFiles = this.selectedFiles.concat(fileData);\n this.btnTabIndex = this.disableKeyboardNavigation ? '-1' : '0';\n if (this.showFileList) {\n if (eventArgs.isModified && eventArgs.modifiedFilesData.length > 0) {\n for (var j = 0; j < eventArgs.modifiedFilesData.length; j++) {\n for (var k = 0; k < fileData.length; k++) {\n if (eventArgs.modifiedFilesData[j].id === fileData[k].id) {\n eventArgs.modifiedFilesData[j].rawFile = fileData[k].rawFile;\n }\n }\n }\n var dataFiles = this.allTypes ? eventArgs.modifiedFilesData :\n this.checkExtension(eventArgs.modifiedFilesData);\n this.updateSortedFileList(dataFiles);\n this.filesData = dataFiles;\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(dataFiles);\n }\n }\n else {\n this.createFileList(fileData, true);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(fileData);\n }\n }\n if (!isNullOrUndefined(eventArgs.progressInterval) && eventArgs.progressInterval !== '') {\n this.progressInterval = eventArgs.progressInterval;\n }\n }\n else {\n this.filesData = this.filesData.concat(fileData);\n if (this.autoUpload) {\n this.upload(this.filesData, true);\n }\n }\n this.raiseActionComplete();\n this.isFirstFileOnSelection = true;\n }\n };\n Uploader.prototype.allowUpload = function () {\n var allowFormUpload = false;\n if (this.isForm && (!isNullOrUndefined(this.asyncSettings.saveUrl) && this.asyncSettings.saveUrl !== '')) {\n allowFormUpload = true;\n }\n return allowFormUpload;\n };\n Uploader.prototype.isFormUpload = function () {\n var isFormUpload = false;\n if (this.isForm && ((isNullOrUndefined(this.asyncSettings.saveUrl) || this.asyncSettings.saveUrl === '')\n && (isNullOrUndefined(this.asyncSettings.removeUrl) || this.asyncSettings.removeUrl === ''))) {\n isFormUpload = true;\n }\n return isFormUpload;\n };\n Uploader.prototype.clearData = function (singleUpload) {\n if (!isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n }\n if (this.browserName !== 'msie' && !singleUpload) {\n this.element.value = '';\n }\n this.fileList = [];\n this.filesData = [];\n this.removeActionButtons();\n };\n Uploader.prototype.updateSortedFileList = function (filesData) {\n var previousListClone = this.createElement('div', { id: 'clonewrapper' });\n var added = -1;\n var removedList;\n if (this.listParent) {\n for (var i = 0; i < this.listParent.querySelectorAll('li').length; i++) {\n var liElement = this.listParent.querySelectorAll('li')[i];\n previousListClone.appendChild(liElement.cloneNode(true));\n }\n removedList = this.listParent.querySelectorAll('li');\n for (var _i = 0, removedList_1 = removedList; _i < removedList_1.length; _i++) {\n var item = removedList_1[_i];\n detach(item);\n }\n this.removeActionButtons();\n var oldList = [].slice.call(previousListClone.childNodes);\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createParentUL();\n for (var index = 0; index < filesData.length; index++) {\n for (var j = 0; j < this.filesData.length; j++) {\n if (this.filesData[j].name === filesData[index].name) {\n this.listParent.appendChild(oldList[j]);\n EventHandler.add(oldList[j].querySelector('.e-icons'), 'click', this.removeFiles, this);\n this.fileList.push(oldList[j]);\n added = index;\n }\n }\n if (added !== index) {\n this.createFileList([filesData[index]]);\n }\n }\n }\n else {\n this.createFileList(filesData);\n }\n };\n Uploader.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n Uploader.prototype.checkExtension = function (files) {\n var dropFiles = files;\n if (!this.isBlank(this.allowedExtensions)) {\n var allowedExtensions = [];\n var extensions = this.allowedExtensions.split(',');\n for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {\n var extension = extensions_1[_i];\n allowedExtensions.push(extension.trim().toLocaleLowerCase());\n }\n for (var i = 0; i < files.length; i++) {\n if (allowedExtensions.indexOf(('.' + files[i].type).toLocaleLowerCase()) === -1) {\n files[i].status = this.localizedTexts('invalidFileType');\n files[i].statusCode = '0';\n }\n }\n }\n return dropFiles;\n };\n Uploader.prototype.validatedFileSize = function (fileSize) {\n var minSizeError = '';\n var maxSizeError = '';\n if (fileSize < this.minFileSize) {\n minSizeError = this.localizedTexts('invalidMinFileSize');\n }\n else if (fileSize > this.maxFileSize) {\n maxSizeError = this.localizedTexts('invalidMaxFileSize');\n }\n else {\n minSizeError = '';\n maxSizeError = '';\n }\n var errorMessage = { minSize: minSizeError, maxSize: maxSizeError };\n return errorMessage;\n };\n Uploader.prototype.isPreLoadFile = function (fileData) {\n var isPreload = false;\n for (var i = 0; i < this.files.length; i++) {\n if (this.files[i].name === fileData.name.slice(0, fileData.name.lastIndexOf('.')) && this.files[i].type === fileData.type) {\n isPreload = true;\n }\n }\n return isPreload;\n };\n Uploader.prototype.createCustomfileList = function (fileData) {\n this.createParentUL();\n for (var _i = 0, fileData_1 = fileData; _i < fileData_1.length; _i++) {\n var listItem = fileData_1[_i];\n var listElement = this.createElement('li', { className: FILE, attrs: { 'data-file-name': listItem.name } });\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(listItem, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, listElement);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, listElement);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(listElement);\n this.fileList.push(listElement);\n }\n this.renderReactTemplates();\n };\n Uploader.prototype.createParentUL = function () {\n if (isNullOrUndefined(this.listParent)) {\n this.listParent = this.createElement('ul', { className: LIST_PARENT });\n this.uploadWrapper.appendChild(this.listParent);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formFileList = function (fileData, files) {\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n var fileContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var statusMessage;\n for (var _i = 0, fileData_2 = fileData; _i < fileData_2.length; _i++) {\n var listItem = fileData_2[_i];\n var fileNameEle = this.createElement('span', { className: FILE_NAME });\n fileNameEle.innerHTML = this.getFileNameOnly(listItem.name);\n var fileTypeEle = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileTypeEle.innerHTML = '.' + fileType;\n if (!fileType) {\n fileTypeEle.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n fileContainer.appendChild(fileNameEle);\n fileContainer.appendChild(fileTypeEle);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileTypeEle);\n rtlContainer.appendChild(fileNameEle);\n fileContainer.appendChild(rtlContainer);\n }\n this.truncateName(fileNameEle);\n statusMessage = this.formValidateFileInfo(listItem, fileList);\n }\n fileList.appendChild(fileContainer);\n this.setListToFileInfo(fileData, fileList);\n var index = this.listParent.querySelectorAll('li').length;\n var infoEle = this.createElement('span');\n if (fileList.classList.contains(INVALID_FILE)) {\n infoEle.classList.add(STATUS);\n infoEle.classList.add(INVALID_FILE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n infoEle.classList.add(fileData.length > 1 ? INFORMATION : FILE_SIZE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData)) : this.bytesToSize(fileData[0].size);\n this.createFormInput(fileData);\n }\n fileContainer.appendChild(infoEle);\n if (isNullOrUndefined(fileList.querySelector('.e-icons'))) {\n var iconElement = this.createElement('span', { className: 'e-icons', attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n fileList.appendChild(fileContainer);\n fileList.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n iconElement.classList.add(REMOVE_ICON);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n };\n Uploader.prototype.formValidateFileInfo = function (listItem, fileList) {\n var statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n this.addInvalidClass(fileList);\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n this.addInvalidClass(fileList);\n statusMessage = typeValidationMessage;\n }\n return statusMessage;\n };\n Uploader.prototype.addInvalidClass = function (fileList) {\n fileList.classList.add(INVALID_FILE);\n };\n Uploader.prototype.createFormInput = function (fileData) {\n if (this.browserName !== 'safari') {\n var inputElement = this.element.cloneNode(true);\n inputElement.classList.add(HIDDEN_INPUT);\n for (var _i = 0, fileData_3 = fileData; _i < fileData_3.length; _i++) {\n var listItem = fileData_3[_i];\n listItem.input = inputElement;\n }\n inputElement.setAttribute('id', getUniqueID('hiddenUploader'));\n inputElement.setAttribute('name', this.uploaderName);\n this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).appendChild(inputElement);\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.value = '';\n }\n }\n };\n Uploader.prototype.getFileSize = function (fileData) {\n var fileSize = 0;\n for (var _i = 0, fileData_4 = fileData; _i < fileData_4.length; _i++) {\n var file = fileData_4[_i];\n fileSize += file.size;\n }\n return fileSize;\n };\n Uploader.prototype.mergeFileInfo = function (fileData, fileList) {\n var result = {\n name: '',\n rawFile: '',\n size: 0,\n status: '',\n type: '',\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '1',\n list: fileList\n };\n var fileNames = [];\n var type = '';\n for (var _i = 0, fileData_5 = fileData; _i < fileData_5.length; _i++) {\n var listItem = fileData_5[_i];\n fileNames.push(listItem.name);\n type = listItem.type;\n }\n result.name = fileNames.join(', ');\n result.size = this.getFileSize(fileData);\n result.type = type;\n result.status = this.statusForFormUpload(fileData, fileList);\n return result;\n };\n Uploader.prototype.statusForFormUpload = function (fileData, fileList) {\n var isValid = true;\n var statusMessage;\n for (var _i = 0, fileData_6 = fileData; _i < fileData_6.length; _i++) {\n var listItem = fileData_6[_i];\n statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n isValid = false;\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n isValid = false;\n statusMessage = typeValidationMessage;\n }\n }\n if (!isValid) {\n fileList.classList.add(INVALID_FILE);\n statusMessage = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n statusMessage = this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData));\n }\n return statusMessage;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formCustomFileList = function (fileData, files) {\n this.createParentUL();\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n this.setListToFileInfo(fileData, fileList);\n var result = this.mergeFileInfo(fileData, fileList);\n fileList.setAttribute('data-file-name', result.name);\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(result, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, fileList);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, fileList);\n }\n var index = this.listParent.querySelectorAll('li').length;\n if (!fileList.classList.contains(INVALID_FILE)) {\n this.createFormInput(fileData);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n this.renderReactTemplates();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Create the file list for specified files data.\n *\n * @param { FileInfo[] } fileData - Specifies the files data for file list creation.\n * @returns {void}\n */\n Uploader.prototype.createFileList = function (fileData, isSelectedFile) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n this.createParentUL();\n this.filesData = (isSelectedFile) ? this.filesData.concat(fileData) : fileData;\n if (this.template !== '' && !isNullOrUndefined(this.template)) {\n if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formCustomFileList(fileData, this.element.files);\n }\n else {\n this.createCustomfileList(fileData);\n }\n }\n else if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formFileList(fileData, this.element.files);\n }\n else {\n for (var _i = 0, fileData_7 = fileData; _i < fileData_7.length; _i++) {\n var listItem = fileData_7[_i];\n var liElement = this.createElement('li', {\n className: FILE,\n attrs: { 'data-file-name': listItem.name, 'data-files-count': '1' }\n });\n var textContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var textElement = this.createElement('span', { className: FILE_NAME, attrs: { 'title': listItem.name } });\n textElement.innerHTML = this.getFileNameOnly(listItem.name);\n var fileExtension = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileExtension.innerHTML = '.' + fileType;\n if (!fileType) {\n fileExtension.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n textContainer.appendChild(textElement);\n textContainer.appendChild(fileExtension);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileExtension);\n rtlContainer.appendChild(textElement);\n textContainer.appendChild(rtlContainer);\n }\n var fileSize = this.createElement('span', { className: FILE_SIZE });\n fileSize.innerHTML = this.bytesToSize(listItem.size);\n textContainer.appendChild(fileSize);\n var statusElement = this.createElement('span', { className: STATUS });\n textContainer.appendChild(statusElement);\n statusElement.innerHTML = listItem.status;\n liElement.appendChild(textContainer);\n var iconElement = this.createElement('span', { className: ' e-icons',\n attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n liElement.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n if (listItem.statusCode === '2') {\n statusElement.classList.add(UPLOAD_SUCCESS);\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('delete'));\n }\n else if (listItem.statusCode !== '1') {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(VALIDATION_FAILS);\n }\n if (this.autoUpload && listItem.statusCode === '1' && this.asyncSettings.saveUrl !== '') {\n statusElement.innerHTML = '';\n }\n if (!iconElement.classList.contains(DELETE_ICON)) {\n iconElement.classList.add(REMOVE_ICON);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n this.truncateName(textElement);\n var preventActionComplete = this.flag;\n if (this.isPreLoadFile(listItem)) {\n this.flag = false;\n this.checkActionComplete(true);\n this.flag = preventActionComplete;\n }\n }\n }\n };\n Uploader.prototype.getSlicedName = function (nameElement) {\n var text = nameElement.textContent;\n nameElement.dataset.tail = text.slice(text.length - 10);\n };\n Uploader.prototype.setListToFileInfo = function (fileData, fileList) {\n for (var _i = 0, fileData_8 = fileData; _i < fileData_8.length; _i++) {\n var listItem = fileData_8[_i];\n listItem.list = fileList;\n }\n };\n Uploader.prototype.truncateName = function (name) {\n var nameElement = name;\n if (this.browserName !== 'edge' && nameElement.offsetWidth < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n /* istanbul ignore next */\n }\n else if (nameElement.offsetWidth + 1 < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n }\n };\n Uploader.prototype.getFileType = function (name) {\n var extension;\n var index = name.lastIndexOf('.');\n if (index >= 0) {\n extension = name.substring(index + 1);\n }\n return extension ? extension : '';\n };\n Uploader.prototype.getFileNameOnly = function (name) {\n var type = this.getFileType(name);\n var names = name.split('.' + type);\n return type = names[0];\n };\n Uploader.prototype.setInitialAttributes = function () {\n if (this.initialAttr.accept) {\n this.element.setAttribute('accept', this.initialAttr.accept);\n }\n if (this.initialAttr.disabled) {\n this.element.setAttribute('disabled', 'disabled');\n }\n if (this.initialAttr.multiple) {\n var newAttr = document.createAttribute('multiple');\n this.element.setAttributeNode(newAttr);\n }\n };\n Uploader.prototype.filterfileList = function (files) {\n var filterFiles = [];\n var li;\n for (var i = 0; i < files.length; i++) {\n li = this.getLiElement(files[i]);\n if (!li.classList.contains(UPLOAD_SUCCESS)) {\n filterFiles.push(files[i]);\n }\n }\n return filterFiles;\n };\n Uploader.prototype.updateStatus = function (files, status, statusCode, updateLiStatus) {\n if (updateLiStatus === void 0) { updateLiStatus = true; }\n if (!(status === '' || isNullOrUndefined(status)) && !(statusCode === '' || isNullOrUndefined(statusCode))) {\n files.status = status;\n files.statusCode = statusCode;\n }\n if (updateLiStatus) {\n var li = this.getLiElement(files);\n if (!isNullOrUndefined(li)) {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS)) && !((status === '' || isNullOrUndefined(status)))) {\n li.querySelector('.' + STATUS).textContent = status;\n }\n }\n }\n return files;\n };\n Uploader.prototype.getLiElement = function (files) {\n var index;\n for (var i = 0; i < this.filesData.length; i++) {\n if (!isNullOrUndefined(files) && ((!isNullOrUndefined(this.filesData[i].id) &&\n !isNullOrUndefined(files.id)) ? (this.filesData[i].name === files.name &&\n this.filesData[i].id === files.id) : this.filesData[i].name === files.name)) {\n index = i;\n }\n }\n return this.fileList[index];\n };\n Uploader.prototype.createProgressBar = function (liElement) {\n var progressbarWrapper = this.createElement('span', { className: PROGRESS_WRAPPER });\n var progressBar = this.createElement('progressbar', { className: PROGRESSBAR, attrs: { value: '0', max: '100' } });\n var progressbarInnerWrapper = this.createElement('span', { className: PROGRESS_INNER_WRAPPER });\n progressBar.setAttribute('style', 'width: 0%');\n var progressbarText = this.createElement('span', { className: PROGRESSBAR_TEXT });\n progressbarText.textContent = '0%';\n progressbarInnerWrapper.appendChild(progressBar);\n progressbarWrapper.appendChild(progressbarInnerWrapper);\n progressbarWrapper.appendChild(progressbarText);\n liElement.querySelector('.' + TEXT_CONTAINER).appendChild(progressbarWrapper);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateProgressbar = function (e, li) {\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && !isNullOrUndefined(li.querySelector('.' + PROGRESSBAR))) {\n if (!isNullOrUndefined(this.progressInterval) && this.progressInterval !== '') {\n var value = (Math.round((e.loaded / e.total) * 100)) % parseInt(this.progressInterval, 10);\n if (value === 0 || value === 100) {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n else {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n };\n Uploader.prototype.changeProgressValue = function (li, progressValue) {\n li.querySelector('.' + PROGRESSBAR).setAttribute('style', 'width:' + progressValue);\n li.querySelector('.' + PROGRESSBAR_TEXT).textContent = progressValue;\n };\n Uploader.prototype.uploadInProgress = function (e, files, customUI, request) {\n var li = this.getLiElement(files);\n if (isNullOrUndefined(li) && (!customUI)) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n /* istanbul ignore next */\n if (files.statusCode === '5') {\n this.cancelUploadingFile(files, e, request, li);\n }\n if (!(li.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0) && li.querySelector('.' + STATUS)) {\n li.querySelector('.' + STATUS).classList.add(UPLOAD_INPROGRESS);\n this.createProgressBar(li);\n this.updateProgressBarClasses(li, UPLOAD_INPROGRESS);\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n this.updateProgressbar(e, li);\n var iconEle = li.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(ABORT_ICON, UPLOAD_INPROGRESS);\n iconEle.setAttribute('title', this.localizedTexts('abort'));\n iconEle.classList.remove(REMOVE_ICON);\n }\n }\n else {\n this.cancelUploadingFile(files, e, request);\n }\n var args = { e: e, operation: 'upload', file: this.updateStatus(files, this.localizedTexts('inProgress'), '3') };\n this.trigger('progress', args);\n };\n /* istanbul ignore next */\n Uploader.prototype.cancelUploadingFile = function (files, e, request, li) {\n var _this = this;\n if (files.statusCode === '5') {\n var eventArgs = {\n event: e,\n fileData: files,\n cancel: false,\n customFormData: []\n };\n this.trigger('canceling', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n files.statusCode = '3';\n if (!isNullOrUndefined(li)) {\n var spinnerTarget = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(li.querySelector('.e-spinner-pane'));\n }\n }\n }\n else {\n request.emitError = false;\n request.httpRequest.abort();\n var formData = new FormData();\n if (files.statusCode === '5') {\n var name_1 = _this.element.getAttribute('name');\n formData.append(name_1, files.name);\n formData.append('cancel-uploading', files.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.removecanceledFile(e, files);\n return {};\n };\n ajax.send(formData);\n }\n }\n });\n }\n };\n Uploader.prototype.removecanceledFile = function (e, file) {\n var liElement = this.getLiElement(file);\n if (isNullOrUndefined(liElement) || liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {\n return;\n }\n this.updateStatus(file, this.localizedTexts('fileUploadCancel'), '5');\n this.renderFailureState(e, file, liElement);\n var spinnerTarget = liElement.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(liElement)) {\n hideSpinner(spinnerTarget);\n if (!isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var args = { event: e, response: requestResponse, operation: 'cancel', file: file };\n this.trigger('success', args);\n };\n Uploader.prototype.renderFailureState = function (e, file, liElement) {\n var _this = this;\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (!isNullOrUndefined(liElement.querySelector('.e-file-status'))) {\n liElement.querySelector('.e-file-status').classList.add(UPLOAD_FAILED);\n }\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n if (isNullOrUndefined(deleteIcon)) {\n return;\n }\n deleteIcon.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n deleteIcon.parentElement.insertBefore(this.pauseButton, deleteIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n /* istanbul ignore next */\n retryElement.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement, false);\n }, false);\n };\n Uploader.prototype.reloadcanceledFile = function (e, file, liElement, custom) {\n file.statusCode = '1';\n file.status = this.localizedTexts('readyToUploadMessage');\n if (!custom) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n if (!isNullOrUndefined(liElement.querySelector('.' + RETRY_ICON))) {\n detach(liElement.querySelector('.' + RETRY_ICON));\n }\n this.pauseButton = null;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement)) {\n liElement.classList.add(RESTRICT_RETRY);\n }\n this.upload([file]);\n };\n /* istanbul ignore next */\n Uploader.prototype.uploadComplete = function (e, file, customUI) {\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var li = this.getLiElement(file);\n if (isNullOrUndefined(li) && (!customUI || isNullOrUndefined(customUI))) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n this.updateProgressBarClasses(li, UPLOAD_SUCCESS);\n this.removeProgressbar(li, 'success');\n var iconEle = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(DELETE_ICON);\n iconEle.setAttribute('title', this.localizedTexts('delete'));\n iconEle.classList.remove(ABORT_ICON);\n iconEle.classList.remove(UPLOAD_INPROGRESS);\n }\n }\n this.raiseSuccessEvent(e, file);\n }\n else {\n this.uploadFailed(e, file);\n }\n };\n Uploader.prototype.getResponse = function (e) {\n var target = e.currentTarget;\n var response = {\n readyState: target.readyState,\n statusCode: target.status,\n statusText: target.statusText,\n headers: target.getAllResponseHeaders(),\n withCredentials: target.withCredentials\n };\n return response;\n };\n Uploader.prototype.raiseSuccessEvent = function (e, file) {\n var _this = this;\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadSuccessMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '2', false), statusText: statusMessage\n };\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement)) {\n var spinnerEle = liElement.querySelector('.' + SPINNER_PANE);\n if (!isNullOrUndefined(spinnerEle)) {\n hideSpinner(liElement);\n detach(spinnerEle);\n }\n }\n this.trigger('success', args, function (args) {\n _this.updateStatus(file, args.statusText, '2');\n _this.uploadedFilesData.push(file);\n _this.trigger('change', { file: _this.uploadedFilesData });\n _this.checkActionButtonStatus();\n if (_this.fileList.length > 0) {\n if ((!(_this.getLiElement(file)).classList.contains(RESTRICT_RETRY))) {\n _this.uploadSequential();\n _this.checkActionComplete(true);\n }\n else {\n /* istanbul ignore next */\n (_this.getLiElement(file)).classList.remove(RESTRICT_RETRY);\n }\n }\n });\n };\n Uploader.prototype.uploadFailed = function (e, file) {\n var _this = this;\n var li = this.getLiElement(file);\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '0', false), statusText: statusMessage\n };\n if (!isNullOrUndefined(li)) {\n this.renderFailureState(e, file, li);\n }\n this.trigger('failure', args, function (args) {\n _this.updateStatus(file, args.statusText, '0');\n _this.checkActionButtonStatus();\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n };\n Uploader.prototype.uploadSequential = function () {\n if (this.sequentialUpload) {\n if (this.autoUpload) {\n /* istanbul ignore next */\n this.checkAutoUpload(this.filesData);\n }\n else {\n this.uploadButtonClick();\n }\n }\n };\n Uploader.prototype.checkActionComplete = function (increment) {\n if (increment) {\n ++this.actionCompleteCount;\n }\n else {\n --this.actionCompleteCount;\n }\n this.raiseActionComplete();\n };\n Uploader.prototype.raiseActionComplete = function () {\n if ((this.filesData.length === this.actionCompleteCount) && this.flag) {\n this.flag = false;\n var eventArgs = {\n fileData: []\n };\n eventArgs.fileData = this.getSelectedFileStatus(this.selectedFiles);\n this.trigger('actionComplete', eventArgs);\n }\n };\n Uploader.prototype.getSelectedFileStatus = function (selectedFiles) {\n var matchFiles = [];\n var matchFilesIndex = 0;\n for (var selectFileIndex = 0; selectFileIndex < selectedFiles.length; selectFileIndex++) {\n var selectedFileData = selectedFiles[selectFileIndex];\n for (var fileDataIndex = 0; fileDataIndex < this.filesData.length; fileDataIndex++) {\n if (this.filesData[fileDataIndex].name === selectedFileData.name && this.filesData[fileDataIndex].status === selectedFileData.status) {\n matchFiles[matchFilesIndex] = this.filesData[fileDataIndex];\n ++matchFilesIndex;\n }\n }\n }\n return matchFiles;\n };\n Uploader.prototype.updateProgressBarClasses = function (li, className) {\n var progressBar = li.querySelector('.' + PROGRESSBAR);\n if (!isNullOrUndefined(progressBar)) {\n progressBar.classList.add(className);\n }\n };\n Uploader.prototype.removeProgressbar = function (li, callType) {\n var _this = this;\n if (!isNullOrUndefined(li.querySelector('.' + PROGRESS_WRAPPER))) {\n this.progressAnimation = new Animation({ duration: 1250 });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESS_WRAPPER), { name: 'FadeOut' });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESSBAR_TEXT), { name: 'FadeOut' });\n setTimeout(function () {\n _this.animateProgressBar(li, callType);\n }, 750);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.animateProgressBar = function (li, callType) {\n if (callType === 'success') {\n li.classList.add(UPLOAD_SUCCESS);\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_SUCCESS);\n }\n }\n else {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n }\n if (li.querySelector('.' + PROGRESS_WRAPPER)) {\n detach(li.querySelector('.' + PROGRESS_WRAPPER));\n }\n };\n Uploader.prototype.setExtensions = function (extensions) {\n if (extensions !== '' && !isNullOrUndefined(extensions)) {\n this.element.setAttribute('accept', extensions);\n }\n else {\n this.element.removeAttribute('accept');\n }\n };\n Uploader.prototype.templateComplier = function (uploadTemplate) {\n if (uploadTemplate) {\n try {\n if (selectAll(uploadTemplate, document).length) {\n return compile(select(uploadTemplate, document).innerHTML.trim());\n }\n else {\n return compile(uploadTemplate);\n }\n }\n catch (exception) {\n return compile(uploadTemplate);\n }\n }\n return undefined;\n };\n Uploader.prototype.setRTL = function () {\n if (this.enableRtl) {\n addClass([this.uploadWrapper], RTL);\n }\n else {\n removeClass([this.uploadWrapper], RTL);\n }\n };\n Uploader.prototype.localizedTexts = function (localeText) {\n this.l10n.setLocale(this.locale);\n return this.l10n.getConstant(localeText);\n };\n Uploader.prototype.setControlStatus = function () {\n if (!this.enabled) {\n this.uploadWrapper.classList.add(DISABLED);\n this.element.setAttribute('disabled', 'disabled');\n this.browseButton.setAttribute('disabled', 'disabled');\n if (!isNullOrUndefined(this.clearButton)) {\n this.clearButton.setAttribute('disabled', 'disabled');\n }\n if (!isNullOrUndefined(this.uploadButton)) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n }\n else {\n if (this.uploadWrapper.classList.contains(DISABLED)) {\n this.uploadWrapper.classList.remove(DISABLED);\n }\n if (!isNullOrUndefined(this.browseButton) && this.element.hasAttribute('disabled')) {\n this.element.removeAttribute('disabled');\n this.browseButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.clearButton) && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.uploadButton) && this.uploadButton.hasAttribute('disabled')) {\n this.uploadButton.hasAttribute('disabled');\n }\n }\n };\n Uploader.prototype.checkHTMLAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['accept', 'multiple', 'disabled'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'accept':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['allowedExtensions'] === undefined))\n || isDynamic) {\n this.setProperties({ allowedExtensions: this.element.getAttribute('accept') }, !isDynamic);\n this.initialAttr.accept = this.allowedExtensions;\n }\n break;\n case 'multiple':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['multiple'] === undefined)) || isDynamic) {\n var isMutiple = this.element.getAttribute(prop) === 'multiple' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ multiple: isMutiple }, !isDynamic);\n this.initialAttr.multiple = true;\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['enabled'] === undefined)) || isDynamic) {\n var isDisabled = this.element.getAttribute(prop) === 'disabled' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: isDisabled }, !isDynamic);\n this.initialAttr.disabled = true;\n }\n }\n }\n }\n };\n Uploader.prototype.chunkUpload = function (file, custom, fileIndex) {\n var start = 0;\n var end = Math.min(this.asyncSettings.chunkSize, file.size);\n var index = 0;\n var blob = file.rawFile.slice(start, end);\n var metaData = { chunkIndex: index, blob: blob, file: file, start: start, end: end, retryCount: 0, request: null };\n this.sendRequest(file, metaData, custom, fileIndex);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.sendRequest = function (file, metaData, custom, fileIndex) {\n var _this = this;\n var formData = new FormData();\n var blob = file.rawFile.slice(metaData.start, metaData.end);\n formData.append(this.uploaderName, blob, file.name);\n formData.append('chunk-index', metaData.chunkIndex.toString());\n formData.append('chunkIndex', metaData.chunkIndex.toString());\n var totalChunk = Math.max(Math.ceil(file.size / this.asyncSettings.chunkSize), 1);\n formData.append('total-chunk', totalChunk.toString());\n formData.append('totalChunk', totalChunk.toString());\n var ajax = new Ajax({ url: this.asyncSettings.saveUrl, type: 'POST', async: true, contentType: null });\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.chunkUploadComplete(e, metaData, custom);\n return {};\n };\n ajax.onUploadProgress = function (e) {\n _this.chunkUploadInProgress(e, metaData, custom);\n return {};\n };\n var eventArgs = {\n fileData: file,\n customFormData: [],\n cancel: false,\n chunkSize: this.asyncSettings.chunkSize === 0 ? null : this.asyncSettings.chunkSize\n };\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n eventArgs.currentChunkIndex = metaData.chunkIndex;\n if (eventArgs.currentChunkIndex === 0) {\n // This event is currently not required but to avoid breaking changes for previous customer, we have included.\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n else {\n _this.trigger('chunkUploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.chunkUploadFailed(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n metaData.request = ajax;\n };\n Uploader.prototype.uploadingEventCallback = function (formData, eventArgs, e, file) {\n if (eventArgs.cancel) {\n this.eventCancelByArgs(e, eventArgs, file);\n }\n else {\n this.updateFormData(formData, eventArgs.customFormData);\n }\n };\n Uploader.prototype.eventCancelByArgs = function (e, eventArgs, file) {\n var _this = this;\n e.cancel = true;\n if (eventArgs.fileData.statusCode === '5') {\n return;\n }\n eventArgs.fileData.statusCode = '5';\n eventArgs.fileData.status = this.localizedTexts('fileUploadCancel');\n var liElement = this.getLiElement(eventArgs.fileData);\n if (liElement) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).innerHTML = this.localizedTexts('fileUploadCancel');\n liElement.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n var removeIcon = liElement.querySelector('.' + REMOVE_ICON);\n if (removeIcon) {\n removeIcon.parentElement.insertBefore(this.pauseButton, removeIcon);\n }\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n /* istanbul ignore next */\n this.pauseButton.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement);\n }, false);\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.checkChunkUpload = function () {\n return (this.asyncSettings.chunkSize <= 0 || isNullOrUndefined(this.asyncSettings.chunkSize)) ? false : true;\n };\n Uploader.prototype.chunkUploadComplete = function (e, metaData, custom) {\n var _this = this;\n var response = e.target;\n var liElement;\n if (response.readyState === 4 && response.status >= 200 && response.status < 300) {\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var totalChunk = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: totalChunk,\n chunkSize: this.asyncSettings.chunkSize,\n response: requestResponse\n };\n this.trigger('chunkSuccess', eventArgs);\n if (isNullOrUndefined(custom) || !custom) {\n liElement = this.getLiElement(metaData.file);\n }\n this.updateMetaData(metaData);\n if (metaData.end === metaData.file.size) {\n metaData.file.statusCode = '3';\n }\n if (metaData.file.statusCode === '5') {\n var eventArgs_1 = { event: e, fileData: metaData.file, cancel: false, customFormData: [] };\n this.trigger('canceling', eventArgs_1, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n metaData.file.statusCode = '3';\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n _this.sendNextRequest(metaData);\n }\n else {\n metaData.request.emitError = false;\n response.abort();\n var formData = new FormData();\n var name_2 = _this.element.getAttribute('name');\n formData.append(name_2, metaData.file.name);\n formData.append('cancel-uploading', metaData.file.name);\n formData.append('cancelUploading', metaData.file.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.removeChunkFile(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n }\n });\n }\n else {\n if ((totalChunk - 1) === metaData.chunkIndex && totalChunk > metaData.chunkIndex) {\n var index = this.pausedData.indexOf(metaData);\n if (index >= 0) {\n this.pausedData.splice(index, 1);\n }\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n if (liElement && !isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n this.removeChunkProgressBar(metaData);\n }\n this.raiseSuccessEvent(e, metaData.file);\n return;\n }\n if (metaData.file.statusCode !== '4') {\n this.sendNextRequest(metaData);\n }\n }\n }\n else {\n this.chunkUploadFailed(e, metaData);\n }\n };\n Uploader.prototype.sendNextRequest = function (metaData) {\n metaData.start = metaData.end;\n metaData.end += this.asyncSettings.chunkSize;\n metaData.end = Math.min(metaData.end, metaData.file.size);\n metaData.chunkIndex += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.removeChunkFile = function (e, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) && !custom)) {\n var liElement = this.getLiElement(metaData.file);\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n var spinnerTarget = deleteIcon;\n this.updateStatus(metaData.file, this.localizedTexts('fileUploadCancel'), '5');\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n (deleteIcon && deleteIcon.classList.remove(ABORT_ICON));\n (deleteIcon && deleteIcon.classList.add(REMOVE_ICON));\n (deleteIcon && deleteIcon.setAttribute('title', this.localizedTexts('remove')));\n var pauseIcon = liElement.querySelector('.' + PAUSE_UPLOAD);\n (pauseIcon && pauseIcon.classList.add(RETRY_ICON));\n (pauseIcon && pauseIcon.classList.remove(PAUSE_UPLOAD));\n (pauseIcon && pauseIcon.setAttribute('title', this.localizedTexts('retry')));\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(deleteIcon)\n && !isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n };\n Uploader.prototype.pauseUpload = function (metaData, e, custom) {\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pause');\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.abortUpload(metaData, custom, eventArgs);\n };\n Uploader.prototype.abortUpload = function (metaData, custom, eventArgs) {\n if (metaData.file.statusCode !== '4') {\n metaData.request.emitError = false;\n metaData.request.httpRequest.abort();\n }\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n var targetElement = liElement.querySelector('.' + PAUSE_UPLOAD);\n targetElement.classList.remove(PAUSE_UPLOAD);\n targetElement.classList.add(RESUME_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('resume'));\n targetElement.nextElementSibling.classList.add(REMOVE_ICON);\n targetElement.nextElementSibling.classList.remove(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('remove'));\n }\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData.splice(i, 1);\n }\n }\n this.pausedData.push(metaData);\n this.trigger('pausing', eventArgs);\n };\n Uploader.prototype.resumeUpload = function (metaData, e, custom) {\n var liElement = this.getLiElement(metaData.file);\n var targetElement;\n if (!isNullOrUndefined(liElement)) {\n targetElement = liElement.querySelector('.' + RESUME_UPLOAD);\n }\n if (!isNullOrUndefined(targetElement) && (isNullOrUndefined(custom) || !custom)) {\n targetElement.classList.remove(RESUME_UPLOAD);\n targetElement.classList.add(PAUSE_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('pause'));\n targetElement.nextElementSibling.classList.remove(REMOVE_ICON);\n targetElement.nextElementSibling.classList.add(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('abort'));\n }\n metaData.file.status = this.localizedTexts('inProgress');\n metaData.file.statusCode = '3';\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.trigger('resuming', eventArgs);\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].end === this.pausedData[i].file.size) {\n this.chunkUploadComplete(e, metaData, custom);\n }\n else {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData[i].start = this.pausedData[i].end;\n this.pausedData[i].end = this.pausedData[i].end + this.asyncSettings.chunkSize;\n this.pausedData[i].end = Math.min(this.pausedData[i].end, this.pausedData[i].file.size);\n this.pausedData[i].chunkIndex = this.pausedData[i].chunkIndex + 1;\n this.sendRequest(this.pausedData[i].file, this.pausedData[i], custom);\n }\n }\n }\n };\n Uploader.prototype.updateMetaData = function (metaData) {\n if (this.uploadMetaData.indexOf(metaData) === -1) {\n this.uploadMetaData.push(metaData);\n }\n else {\n this.uploadMetaData.splice(this.uploadMetaData.indexOf(metaData), 1);\n this.uploadMetaData.push(metaData);\n }\n };\n Uploader.prototype.removeChunkProgressBar = function (metaData) {\n var liElement = this.getLiElement(metaData.file);\n if (!isNullOrUndefined(liElement)) {\n this.updateProgressBarClasses(liElement, UPLOAD_SUCCESS);\n this.removeProgressbar(liElement, 'success');\n var cancelButton = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(cancelButton)) {\n cancelButton.classList.add(DELETE_ICON);\n cancelButton.setAttribute('title', this.localizedTexts('delete'));\n cancelButton.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n }\n }\n };\n Uploader.prototype.chunkUploadFailed = function (e, metaData, custom) {\n var _this = this;\n var chunkCount = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var liElement;\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n liElement = this.getLiElement(metaData.file);\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: chunkCount,\n chunkSize: this.asyncSettings.chunkSize,\n cancel: false,\n response: requestResponse\n };\n this.trigger('chunkFailure', eventArgs, function (eventArgs) {\n // To prevent triggering of failure event\n if (!eventArgs.cancel) {\n if (metaData.retryCount < _this.asyncSettings.retryCount) {\n setTimeout(function () {\n _this.retryRequest(liElement, metaData, custom);\n }, _this.asyncSettings.retryAfterDelay);\n }\n else {\n if (!isNullOrUndefined(liElement)) {\n var pauseButton = liElement.querySelector('.' + PAUSE_UPLOAD) ?\n liElement.querySelector('.' + PAUSE_UPLOAD) : liElement.querySelector('.' + RESUME_UPLOAD);\n if (!isNullOrUndefined(pauseButton)) {\n pauseButton.classList.add(RETRY_ICON);\n pauseButton.classList.remove(PAUSE_UPLOAD, RESUME_UPLOAD);\n }\n _this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n _this.removeProgressbar(liElement, 'failure');\n liElement.querySelector('.e-icons').classList.remove(UPLOAD_INPROGRESS);\n var iconElement = liElement.querySelector('.' + ABORT_ICON) ?\n liElement.querySelector('.' + ABORT_ICON) : liElement.querySelector('.' + REMOVE_ICON);\n iconElement.classList.remove(ABORT_ICON);\n if (!isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n if (metaData.start > 0) {\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('delete'));\n }\n else {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('remove'));\n }\n }\n metaData.retryCount = 0;\n var file_1 = metaData.file;\n var failureMessage = _this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: requestResponse,\n operation: 'upload',\n file: _this.updateStatus(file_1, failureMessage, '0', false),\n statusText: failureMessage\n };\n _this.trigger('failure', args, function (args) {\n _this.updateStatus(file_1, args.statusText, '0');\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n }\n }\n });\n };\n Uploader.prototype.retryRequest = function (liElement, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n }\n metaData.retryCount += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.checkPausePlayAction = function (e) {\n var targetElement = e.target;\n var selectedElement = e.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var fileData = this.filesData[index];\n var metaData = this.getCurrentMetaData(fileData);\n if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n /* istanbul ignore next */\n this.pauseUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n /* istanbul ignore next */\n this.resumeUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n if (metaData.file.status === this.localizedTexts('fileUploadCancel')) {\n this.retryUpload(metaData, false);\n }\n else {\n this.retryUpload(metaData, true);\n }\n }\n };\n Uploader.prototype.retryUpload = function (metaData, fromcanceledStage) {\n if (fromcanceledStage) {\n metaData.end = metaData.end + this.asyncSettings.chunkSize;\n metaData.start = metaData.start + this.asyncSettings.chunkSize;\n this.sendRequest(metaData.file, metaData);\n }\n else {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n /* istanbul ignore next */\n (this.getLiElement(metaData.file)).classList.add(RESTRICT_RETRY);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.chunkUploadInProgress = function (e, metaData, custom) {\n var _this = this;\n if (metaData.file.statusCode === '4') {\n return;\n }\n if (metaData.file.statusCode !== '4' && metaData.file.statusCode !== '5') {\n metaData.file.statusCode = '3';\n metaData.file.status = this.localizedTexts('inProgress');\n }\n this.updateMetaData(metaData);\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(liElement)) {\n return;\n }\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n if (!isNullOrUndefined(retryElement)) {\n retryElement.classList.add(PAUSE_UPLOAD);\n retryElement.setAttribute('title', this.localizedTexts('pause'));\n retryElement.classList.remove(RETRY_ICON);\n }\n if (!isNullOrUndefined(liElement)) {\n if (!(liElement.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0)) {\n var statusElement = liElement.querySelector('.' + STATUS);\n if (isNullOrUndefined(this.template)) {\n statusElement.classList.add(UPLOAD_INPROGRESS);\n statusElement.classList.remove(UPLOAD_FAILED);\n this.createProgressBar(liElement);\n this.updateProgressBarClasses(liElement, UPLOAD_INPROGRESS);\n }\n var clearIcon = liElement.querySelector('.' + REMOVE_ICON) ? liElement.querySelector('.' + REMOVE_ICON) :\n liElement.querySelector('.' + DELETE_ICON);\n if (!isNullOrUndefined(clearIcon)) {\n clearIcon.classList.add(ABORT_ICON);\n clearIcon.setAttribute('title', this.localizedTexts('abort'));\n clearIcon.classList.remove(REMOVE_ICON);\n }\n }\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && isNullOrUndefined(this.template) && metaData.file.statusCode !== '4') {\n var progressVal = void 0;\n var totalChunks = Math.ceil(metaData.file.size / this.asyncSettings.chunkSize) - 1;\n if (this.asyncSettings.chunkSize && totalChunks) {\n progressVal = Math.round(metaData.chunkIndex / totalChunks * 100);\n this.changeProgressValue(liElement, progressVal.toString() + '%');\n }\n }\n if (metaData.chunkIndex === 0) {\n this.checkActionButtonStatus();\n }\n }\n if (isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD)) && isNullOrUndefined(this.template)\n && isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-pause-btn', attrs: { 'tabindex': this.btnTabIndex } });\n if (this.browserName === 'msie') {\n this.pauseButton.classList.add('e-msie');\n }\n var abortIcon = liElement.querySelector('.' + ABORT_ICON);\n abortIcon.parentElement.insertBefore(this.pauseButton, abortIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('pause'));\n this.pauseButton.addEventListener('click', function (e) {\n _this.checkPausePlayAction(e);\n }, false);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * It is used to convert bytes value into kilobytes or megabytes depending on the size based\n * on [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix).\n *\n * @param { number } bytes - Specifies the file size in bytes.\n * @returns {string}\n */\n Uploader.prototype.bytesToSize = function (bytes) {\n var i = -1;\n if (!bytes) {\n return '0.0 KB';\n }\n do {\n bytes = bytes / 1024;\n i++;\n } while (bytes > 99);\n if (i >= 2) {\n bytes = bytes * 1024;\n i = 1;\n }\n return Math.max(bytes, 0).toFixed(1) + ' ' + ['KB', 'MB'][i];\n };\n /**\n * Allows you to sort the file data alphabetically based on its file name clearly.\n *\n * @param { FileList } filesData - specifies the files data for upload.\n * @returns {File[]}\n */\n /* istanbul ignore next */\n Uploader.prototype.sortFileList = function (filesData) {\n filesData = filesData ? filesData : this.sortFilesList;\n var files = filesData;\n var fileNames = [];\n for (var i = 0; i < files.length; i++) {\n fileNames.push(files[i].name);\n }\n var sortedFileNames = fileNames.sort();\n var sortedFilesData = [];\n for (var _i = 0, sortedFileNames_1 = sortedFileNames; _i < sortedFileNames_1.length; _i++) {\n var name_3 = sortedFileNames_1[_i];\n for (var i = 0; i < files.length; i++) {\n if (name_3 === files[i].name) {\n sortedFilesData.push(files[i]);\n }\n }\n }\n return sortedFilesData;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Uploader.prototype.destroy = function () {\n this.element.value = null;\n this.clearTemplate();\n this.clearAll();\n this.unWireEvents();\n this.unBindDropEvents();\n if (this.multiple) {\n this.element.removeAttribute('multiple');\n }\n if (!this.enabled) {\n this.element.removeAttribute('disabled');\n }\n this.element.removeAttribute('accept');\n this.setInitialAttributes();\n var attributes = ['aria-label', 'directory', 'webkitdirectory', 'tabindex'];\n for (var _i = 0, attributes_2 = attributes; _i < attributes_2.length; _i++) {\n var key = attributes_2[_i];\n this.element.removeAttribute(key);\n }\n if (!isNullOrUndefined(this.uploadWrapper)) {\n this.uploadWrapper.parentElement.appendChild(this.element);\n detach(this.uploadWrapper);\n }\n this.uploadWrapper = null;\n this.uploadWrapper = null;\n this.browseButton = null;\n this.dropAreaWrapper = null;\n this.dropZoneElement = null;\n this.dropArea = null;\n this.keyboardModule = null;\n this.clearButton = null;\n this.uploadButton = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Allows you to call the upload process manually by calling save URL action.\n * To process the selected files (added in upload queue), pass an empty argument otherwise\n * upload the specific file based on its argument.\n *\n * @param { FileInfo | FileInfo[] } files - Specifies the files data for upload.\n * @param {boolean} custom - Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.upload = function (files, custom) {\n var _this = this;\n files = files ? files : this.filesData;\n if (this.sequentialUpload && (this.isFirstFileOnSelection || custom)) {\n this.sequenceUpload(files);\n }\n else {\n var uploadFiles_1 = this.getFilesInArray(files);\n var eventArgs = {\n customFormData: [],\n currentRequest: null,\n cancel: false\n };\n this.trigger('beforeUpload', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.uploadFiles(uploadFiles_1, custom);\n }\n });\n }\n };\n Uploader.prototype.getFilesInArray = function (files) {\n var uploadFiles = [];\n if (files instanceof Array) {\n uploadFiles = files;\n }\n else {\n uploadFiles.push(files);\n }\n return uploadFiles;\n };\n /* istanbul ignore next */\n Uploader.prototype.serverReadFileBase64 = function (fileIndex, position, totalCount) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var file = _this.fileStreams[fileIndex].rawFile;\n try {\n var reader = new FileReader();\n reader.onload = (function (args) {\n return function () {\n try {\n var contents = args.result;\n var data = contents ? contents.split(';base64,')[1] : null;\n resolve(data);\n }\n catch (e) {\n reject(e);\n }\n };\n })(reader);\n reader.readAsDataURL(file.slice(position, position + totalCount));\n }\n catch (e) {\n reject(e);\n }\n });\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.uploadFileCount = function (ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var result = files.length;\n return result;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileRead = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var file = files[index];\n var fileCount = this.newFileRef++;\n this.fileStreams[fileCount] = file;\n return fileCount;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileInfo = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return null;\n }\n var file = files[index];\n if (!file) {\n return null;\n }\n return this.filesData[index];\n };\n Uploader.prototype.uploadFiles = function (files, custom) {\n var selectedFiles = [];\n if (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl)) {\n return;\n }\n if (!custom || isNullOrUndefined(custom)) {\n if (!this.multiple) {\n var file = [];\n file.push(files[0]);\n selectedFiles = this.filterfileList(file);\n }\n else {\n selectedFiles = this.filterfileList(files);\n }\n }\n else {\n selectedFiles = files;\n }\n for (var i = 0; i < selectedFiles.length; i++) {\n this.uploadFilesRequest(selectedFiles, i, custom);\n }\n };\n Uploader.prototype.uploadFilesRequest = function (selectedFiles, i, custom) {\n var _this = this;\n var cloneFiles = [];\n var chunkEnabled = this.checkChunkUpload();\n var ajax = new Ajax(this.asyncSettings.saveUrl, 'POST', true, null);\n ajax.emitError = false;\n var getFileData;\n var eventArgs = {\n fileData: selectedFiles[i],\n customFormData: [],\n cancel: false\n };\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n _this.eventCancelByArgs(e, eventArgs, selectedFiles[i]);\n }\n _this.updateFormData(formData, eventArgs.customFormData);\n });\n };\n if (selectedFiles[i].statusCode === '1') {\n var name_4 = this.element.getAttribute('name');\n formData.append(name_4, selectedFiles[i].rawFile, selectedFiles[i].name);\n if (chunkEnabled && selectedFiles[i].size > this.asyncSettings.chunkSize) {\n this.chunkUpload(selectedFiles[i], custom, i);\n }\n else {\n ajax.onLoad = function (e) {\n if (eventArgs.cancel) {\n return {};\n }\n else {\n _this.uploadComplete(e, selectedFiles[i], custom);\n return {};\n }\n };\n ajax.onUploadProgress = function (e) {\n if (eventArgs.cancel) {\n return {};\n }\n else {\n _this.uploadInProgress(e, selectedFiles[i], custom, ajax);\n return {};\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.uploadFailed(e, selectedFiles[i]);\n return {};\n };\n ajax.send(formData);\n }\n }\n };\n Uploader.prototype.spliceFiles = function (liIndex) {\n var liElement = this.fileList[liIndex];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < liIndex; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n var endIndex = (startIndex + nameElements) - 1;\n for (var j = endIndex; j >= startIndex; j--) {\n allFiles.splice(j, 1);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Remove the uploaded file from server manually by calling the remove URL action.\n * If you pass an empty argument to this method, the complete file list can be cleared,\n * otherwise remove the specific file based on its argument (“file_data”).\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to remove from file list/server.\n * @param { boolean } customTemplate - Set true if the component rendering with customize template.\n * @param { boolean } removeDirectly - Set true if files remove without removing event.\n * @param { boolean } postRawFile - Set false, to post file name only to the remove action.\n * @returns {void}\n */\n Uploader.prototype.remove = function (fileData, customTemplate, removeDirectly, postRawFile, args) {\n var _this = this;\n if (isNullOrUndefined(postRawFile)) {\n postRawFile = true;\n }\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n customFormData: [],\n postRawFile: postRawFile,\n currentRequest: null\n };\n var beforeEventArgs = {\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('beforeRemove', beforeEventArgs, function (beforeEventArgs) {\n if (!beforeEventArgs.cancel) {\n if (_this.isFormUpload()) {\n eventArgs.filesData = fileData;\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n var removingFiles = _this.getFilesInArray(fileData);\n var isLiRemoved = false;\n var liIndex = void 0;\n for (var _i = 0, removingFiles_1 = removingFiles; _i < removingFiles_1.length; _i++) {\n var data = removingFiles_1[_i];\n if (!isLiRemoved) {\n liIndex = _this.fileList.indexOf(data.list);\n }\n if (liIndex > -1) {\n var inputElement = !isNullOrUndefined(data.input) ? data.input : null;\n if (inputElement) {\n detach(inputElement);\n }\n _this.spliceFiles(liIndex);\n detach(_this.fileList[liIndex]);\n _this.fileList.splice(liIndex, 1);\n isLiRemoved = true;\n liIndex = -1;\n }\n }\n }\n });\n }\n else if (_this.isForm && (isNullOrUndefined(_this.asyncSettings.removeUrl) || _this.asyncSettings.removeUrl === '')) {\n eventArgs.filesData = _this.getFilesData();\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearAll();\n }\n });\n }\n else {\n var removeFiles = [];\n fileData = !isNullOrUndefined(fileData) ? fileData : _this.filesData;\n if (fileData instanceof Array) {\n removeFiles = fileData;\n }\n else {\n removeFiles.push(fileData);\n }\n eventArgs.filesData = removeFiles;\n var removeUrl = _this.asyncSettings.removeUrl;\n var validUrl = (removeUrl === '' || isNullOrUndefined(removeUrl)) ? false : true;\n var _loop_5 = function (files) {\n var fileUploadedIndex = _this.uploadedFilesData.indexOf(files);\n if ((files.statusCode === '2' || files.statusCode === '4' || (files.statusCode === '0' &&\n fileUploadedIndex !== -1)) && validUrl) {\n _this.removeUploadedFile(files, eventArgs, removeDirectly, customTemplate);\n }\n else {\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.removeFilesData(files, customTemplate);\n }\n });\n }\n else {\n _this.removeFilesData(files, customTemplate);\n }\n }\n if (args && !args.target.classList.contains(REMOVE_ICON)) {\n _this.checkActionComplete(false);\n }\n };\n for (var _i = 0, removeFiles_1 = removeFiles; _i < removeFiles_1.length; _i++) {\n var files = removeFiles_1[_i];\n _loop_5(files);\n }\n }\n }\n });\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n /**\n * Clear all the file entries from list that can be uploaded files or added in upload queue.\n *\n * @returns {void}\n */\n Uploader.prototype.clearAll = function () {\n var _this = this;\n if (isNullOrUndefined(this.listParent)) {\n if (this.browserName !== 'msie') {\n this.element.value = '';\n }\n this.filesData = [];\n return;\n }\n var eventArgs = {\n cancel: false,\n filesData: this.filesData\n };\n this.trigger('clearing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearData();\n _this.actionCompleteCount = 0;\n _this.count = -1;\n }\n });\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get the data of files which are shown in file list.\n *\n * @param { number } index - specifies the file list item(li) index.\n * @returns {FileInfo[]}\n */\n Uploader.prototype.getFilesData = function (index) {\n if (isNullOrUndefined(index)) {\n return this.filesData;\n }\n else {\n return this.getSelectedFiles(index);\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Pauses the in-progress chunked upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to pause from uploading.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.pause = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.pauseUploading(fileDataFiles, custom);\n };\n Uploader.prototype.pauseUploading = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n this.pauseUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n Uploader.prototype.getFiles = function (fileData) {\n var files = [];\n if (!isNullOrUndefined(fileData) && !(fileData instanceof Array)) {\n files.push(fileData);\n }\n else {\n files = fileData;\n }\n return files;\n };\n /**\n * Resumes the chunked upload that is previously paused based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to resume the paused file.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.resume = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.resumeFiles(fileDataFiles, custom);\n };\n Uploader.prototype.resumeFiles = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '4') {\n this.resumeUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n /**\n * Retries the canceled or failed file upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to retry the canceled or failed file.\n * @param { boolean } fromcanceledStage - Set true to retry from canceled stage and set false to retry from initial stage.\n * @param {boolean} custom -Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.retry = function (fileData, fromcanceledStage, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n if (this.sequentialUpload && this.isFirstFileOnSelection) {\n this.isFirstFileOnSelection = false;\n }\n this.retryFailedFiles(fileDataFiles, fromcanceledStage, custom);\n };\n Uploader.prototype.retryFailedFiles = function (fileData, fromcanceledStage, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '5' || files[i].statusCode === '0') {\n if (this.asyncSettings.chunkSize > 0 && this.getCurrentMetaData(files[i], null)) {\n this.retryUpload(this.getCurrentMetaData(files[i], null), fromcanceledStage);\n }\n else {\n var liElement = void 0;\n if (!custom) {\n liElement = this.fileList[this.filesData.indexOf(files[i])];\n }\n this.reloadcanceledFile(null, files[i], liElement, custom);\n }\n }\n }\n };\n /**\n * Stops the in-progress chunked upload based on the file data.\n * When the file upload is canceled, the partially uploaded file is removed from server.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to cancel the progressing file.\n * @returns {void}\n */\n Uploader.prototype.cancel = function (fileData) {\n fileData = fileData ? fileData : this.filesData;\n var cancelingFiles = this.getFilesInArray(fileData);\n this.cancelUpload(cancelingFiles);\n };\n Uploader.prototype.cancelUpload = function (fileData) {\n var files = this.getFiles(fileData);\n if (this.asyncSettings.chunkSize > 0) {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n var metaData = this.getCurrentMetaData(files[i], null);\n metaData.file.statusCode = '5';\n metaData.file.status = this.localizedTexts('fileUploadCancel');\n this.updateMetaData(metaData);\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n else {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n files[i].statusCode = '5';\n files[i].status = this.localizedTexts('fileUploadCancel');\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n };\n Uploader.prototype.showHideUploadSpinner = function (files) {\n var liElement = this.getLiElement(files);\n if (!isNullOrUndefined(liElement) && isNullOrUndefined(this.template)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n };\n __decorate([\n Complex({ saveUrl: '', removeUrl: '' }, AsyncSettings)\n ], Uploader.prototype, \"asyncSettings\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"sequentialUpload\", void 0);\n __decorate([\n Property({})\n ], Uploader.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"multiple\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, ButtonsProps)\n ], Uploader.prototype, \"buttons\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(0)\n ], Uploader.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], Uploader.prototype, \"maxFileSize\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"dropArea\", void 0);\n __decorate([\n Collection([{}], FilesProp)\n ], Uploader.prototype, \"files\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"showFileList\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property('Default')\n ], Uploader.prototype, \"dropEffect\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"rendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeUpload\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"fileListRendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"uploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeRemove\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"clearing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkSuccess\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkFailure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkUploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"canceling\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"pausing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"resuming\", void 0);\n Uploader = __decorate([\n NotifyPropertyChanges\n ], Uploader);\n return Uploader;\n}(Component));\nexport { Uploader };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","/**\n * Defines common util methods used by Rich Text Editor.\n */\nimport { isNullOrUndefined, Browser, createElement, detach } from '@syncfusion/ej2-base';\nvar inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n/**\n * @returns {void}\n * @hidden\n */\nexport function isIDevice() {\n var result = false;\n if (Browser.isDevice && Browser.isIos) {\n result = true;\n }\n return result;\n}\n/**\n * @param {Element} editableElement - specifies the editable element.\n * @param {string} selector - specifies the string values.\n * @returns {void}\n * @hidden\n */\nexport function setEditFrameFocus(editableElement, selector) {\n if (editableElement.nodeName === 'BODY' && !isNullOrUndefined(selector)) {\n var iframe = top.window.document.querySelector(selector);\n if (!isNullOrUndefined(iframe)) {\n iframe.contentWindow.focus();\n }\n }\n}\n/**\n * @param {string} value - specifies the string value\n * @param {string} enterAction - specifies the enter key action API\n * @returns {void}\n * @hidden\n */\nexport function updateTextNode(value, enterAction) {\n var tempNode = document.createElement('div');\n tempNode.innerHTML = value;\n tempNode.setAttribute('class', 'tempDiv');\n var resultElm = document.createElement('div');\n var childNodes = tempNode.childNodes;\n if (childNodes.length > 0) {\n var isPreviousInlineElem = void 0;\n var previousParent = void 0;\n var paraElm = void 0;\n while (tempNode.firstChild) {\n if ((tempNode.firstChild.nodeName === '#text' &&\n (tempNode.firstChild.textContent.indexOf('\\n') < 0 || tempNode.firstChild.textContent.trim() !== '')) ||\n inlineNode.indexOf(tempNode.firstChild.nodeName.toLocaleLowerCase()) >= 0) {\n if (!isPreviousInlineElem) {\n if (enterAction === 'BR') {\n resultElm.appendChild(tempNode.firstChild);\n previousParent = resultElm;\n }\n else {\n paraElm = createElement('p');\n resultElm.appendChild(paraElm);\n paraElm.appendChild(tempNode.firstChild);\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n }\n else {\n previousParent.appendChild(tempNode.firstChild);\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n }\n else if (tempNode.firstChild.nodeName === '#text' && (tempNode.firstChild.textContent === '\\n' ||\n (tempNode.firstChild.textContent.indexOf('\\n') >= 0 && tempNode.firstChild.textContent.trim() === ''))) {\n detach(tempNode.firstChild);\n }\n else {\n resultElm.appendChild(tempNode.firstChild);\n isPreviousInlineElem = false;\n }\n }\n var tableElm = resultElm.querySelectorAll('table');\n for (var i = 0; i < tableElm.length; i++) {\n if (tableElm[i].getAttribute('border') === '0') {\n tableElm[i].removeAttribute('border');\n }\n var tdElm = tableElm[i].querySelectorAll('td');\n for (var j = 0; j < tdElm.length; j++) {\n if (tdElm[j].style.borderLeft === 'none') {\n tdElm[j].style.removeProperty('border-left');\n }\n if (tdElm[j].style.borderRight === 'none') {\n tdElm[j].style.removeProperty('border-right');\n }\n if (tdElm[j].style.borderBottom === 'none') {\n tdElm[j].style.removeProperty('border-bottom');\n }\n if (tdElm[j].style.borderTop === 'none') {\n tdElm[j].style.removeProperty('border-top');\n }\n if (tdElm[j].style.border === 'none') {\n tdElm[j].style.removeProperty('border');\n }\n }\n if (!tableElm[i].classList.contains('e-rte-table')) {\n tableElm[i].classList.add('e-rte-table');\n }\n }\n var imageElm = resultElm.querySelectorAll('img');\n for (var i = 0; i < imageElm.length; i++) {\n if (!imageElm[i].classList.contains('e-rte-image')) {\n imageElm[i].classList.add('e-rte-image');\n }\n if (!(imageElm[i].classList.contains('e-imginline') ||\n imageElm[i].classList.contains('e-imgbreak'))) {\n imageElm[i].classList.add('e-imginline');\n }\n }\n }\n return resultElm.innerHTML;\n}\n/**\n * @param {Node} startChildNodes - specifies the node\n * @returns {void}\n * @hidden\n */\nexport function getLastTextNode(startChildNodes) {\n var finalNode = startChildNodes;\n do {\n if (finalNode.childNodes.length > 0) {\n finalNode = finalNode.childNodes[0];\n }\n } while (finalNode.childNodes.length > 0);\n return finalNode;\n}\n/**\n * @returns {void}\n * @hidden\n */\nexport function getDefaultHtmlTbStatus() {\n return {\n bold: false,\n italic: false,\n subscript: false,\n superscript: false,\n strikethrough: false,\n orderedlist: false,\n unorderedlist: false,\n underline: false,\n alignments: null,\n backgroundcolor: null,\n fontcolor: null,\n fontname: null,\n fontsize: null,\n formats: null,\n createlink: false,\n insertcode: false\n };\n}\n/**\n * @returns {void}\n * @hidden\n */\nexport function getDefaultMDTbStatus() {\n return {\n bold: false,\n italic: false,\n subscript: false,\n superscript: false,\n strikethrough: false,\n orderedlist: false,\n uppercase: false,\n lowercase: false,\n inlinecode: false,\n unorderedlist: false,\n formats: null\n };\n}\n","import { addClass, detach, EventHandler, isNullOrUndefined, select, Ajax, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser, closest, removeClass, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { Uploader, TextBox } from '@syncfusion/ej2-inputs';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Button, CheckBox } from '@syncfusion/ej2-buttons';\nimport { RenderType } from '../base/enum';\nimport { dispatchEvent, parseHtml, hasClass, convertToBlob } from '../base/util';\nimport { isIDevice } from '../../common/util';\n/**\n * `Image` module is used to handle image actions.\n */\nvar Image = /** @class */ (function () {\n function Image(parent, serviceLocator) {\n this.isImgUploaded = false;\n this.isAllowedTypes = true;\n this.pageX = null;\n this.pageY = null;\n this.mouseX = null;\n this.deletedImg = [];\n this.parent = parent;\n this.rteID = parent.element.id;\n this.i10n = serviceLocator.getService('rteLocale');\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n this.addEventListener();\n }\n Image.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.keyUp, this.onKeyUp, this);\n this.parent.on(events.insertImage, this.insertImage, this);\n this.parent.on(events.showImageDialog, this.showDialog, this);\n this.parent.on(events.closeImageDialog, this.closeDialog, this);\n this.parent.on(events.windowResize, this.onWindowResize, this);\n this.parent.on(events.insertCompleted, this.showImageQuickToolbar, this);\n this.parent.on(events.clearDialogObj, this.clearDialogObj, this);\n this.parent.on(events.imageToolbarAction, this.onToolbarAction, this);\n this.parent.on(events.imageCaption, this.caption, this);\n this.parent.on(events.imageDelete, this.deleteImg, this);\n this.parent.on(events.imageLink, this.insertImgLink, this);\n this.parent.on(events.imageAlt, this.insertAltText, this);\n this.parent.on(events.editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.imageSize, this.imageSize, this);\n this.parent.on(events.dropDownSelect, this.alignmentSelect, this);\n this.parent.on(events.initialEnd, this.afterRender, this);\n this.parent.on(events.dynamicModule, this.afterRender, this);\n this.parent.on(events.paste, this.imagePaste, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n Image.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.keyUp, this.onKeyUp);\n this.parent.off(events.windowResize, this.onWindowResize);\n this.parent.off(events.insertImage, this.insertImage);\n this.parent.off(events.showImageDialog, this.showDialog);\n this.parent.off(events.closeImageDialog, this.closeDialog);\n this.parent.off(events.insertCompleted, this.showImageQuickToolbar);\n this.parent.off(events.clearDialogObj, this.clearDialogObj);\n this.parent.off(events.imageCaption, this.caption);\n this.parent.off(events.imageToolbarAction, this.onToolbarAction);\n this.parent.off(events.imageDelete, this.deleteImg);\n this.parent.off(events.imageLink, this.insertImgLink);\n this.parent.off(events.imageAlt, this.insertAltText);\n this.parent.off(events.editAreaClick, this.editAreaClickHandler);\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.imageSize, this.imageSize);\n this.parent.off(events.dropDownSelect, this.alignmentSelect);\n this.parent.off(events.initialEnd, this.afterRender);\n this.parent.off(events.dynamicModule, this.afterRender);\n this.parent.off(events.paste, this.imagePaste);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.destroy, this.removeEventListener);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n var dropElement = this.parent.iframeSettings.enable ? this.parent.inputElement.ownerDocument\n : this.parent.inputElement;\n dropElement.removeEventListener('drop', this.dragDrop.bind(this), true);\n dropElement.removeEventListener('dragstart', this.dragStart.bind(this), true);\n dropElement.removeEventListener('dragenter', this.dragEnter.bind(this), true);\n dropElement.removeEventListener('dragover', this.dragOver.bind(this), true);\n if (!isNullOrUndefined(this.contentModule)) {\n EventHandler.remove(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.imageClick);\n this.parent.formatter.editorManager.observer.off(events.checkUndo, this.undoStack);\n if (this.parent.insertImageSettings.resize) {\n EventHandler.remove(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.resizeStart);\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n EventHandler.remove(this.contentModule.getEditPanel(), 'cut', this.onCutHandler);\n }\n }\n };\n Image.prototype.updateCss = function (currentObj, e) {\n if (currentObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n currentObj.setProperties({ cssClass: (currentObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n currentObj.setProperties({ cssClass: (currentObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Image.prototype.setCssClass = function (e) {\n if (this.popupObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n addClass([this.popupObj.element], e.cssClass);\n }\n else {\n removeClass([this.popupObj.element], e.oldCssClass);\n addClass([this.popupObj.element], e.cssClass);\n }\n }\n this.updateCss(this.checkBoxObj, e);\n this.updateCss(this.widthNum, e);\n this.updateCss(this.heightNum, e);\n this.updateCss(this.uploadObj, e);\n this.updateCss(this.dialogObj, e);\n };\n Image.prototype.onIframeMouseDown = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Image.prototype.afterRender = function () {\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n EventHandler.add(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.imageClick, this);\n if (this.parent.insertImageSettings.resize) {\n EventHandler.add(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.resizeStart, this);\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.contentModule.getEditPanel(), 'cut', this.onCutHandler, this);\n }\n var dropElement = this.parent.iframeSettings.enable ? this.parent.inputElement.ownerDocument :\n this.parent.inputElement;\n dropElement.addEventListener('drop', this.dragDrop.bind(this), true);\n dropElement.addEventListener('dragstart', this.dragStart.bind(this), true);\n dropElement.addEventListener('dragenter', this.dragOver.bind(this), true);\n dropElement.addEventListener('dragover', this.dragOver.bind(this), true);\n };\n Image.prototype.undoStack = function (args) {\n if (args.subCommand.toLowerCase() === 'undo' || args.subCommand.toLowerCase() === 'redo') {\n for (var i = 0; i < this.parent.formatter.getUndoRedoStack().length; i++) {\n var temp = this.parent.createElement('div');\n var contentElem = parseHtml(this.parent.formatter.getUndoRedoStack()[i].text);\n temp.appendChild(contentElem);\n var img = temp.querySelectorAll('img');\n if (temp.querySelector('.e-img-resize') && img.length > 0) {\n for (var j = 0; j < img.length; j++) {\n img[j].style.outline = '';\n }\n detach(temp.querySelector('.e-img-resize'));\n this.parent.formatter.getUndoRedoStack()[i].text = temp.innerHTML;\n }\n }\n }\n };\n Image.prototype.resizeEnd = function (e) {\n this.resizeBtnInit();\n this.imgEle.parentElement.style.cursor = 'auto';\n if (Browser.isDevice) {\n removeClass([e.target.parentElement], 'e-mob-span');\n }\n var args = { event: e, requestType: 'images' };\n this.parent.trigger(events.resizeStop, args);\n /* eslint-disable */\n var pageX = this.getPointX(e);\n var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + e.clientY : e.pageY;\n /* eslint-enable */\n this.parent.formatter.editorManager.observer.on(events.checkUndo, this.undoStack, this);\n this.parent.formatter.saveData();\n };\n Image.prototype.resizeStart = function (e, ele) {\n var _this = this;\n if (this.parent.readonly) {\n return;\n }\n var target = ele ? ele : e.target;\n this.prevSelectedImgEle = this.imgEle;\n if (target.tagName === 'IMG') {\n this.parent.preventDefaultResize(e);\n var img = target;\n if (this.imgResizeDiv && this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n detach(this.imgResizeDiv);\n }\n this.imageResize(img);\n }\n if (target.classList.contains('e-rte-imageboxmark')) {\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n this.pageX = this.getPointX(e);\n this.pageY = this.getPointY(e);\n e.preventDefault();\n e.stopImmediatePropagation();\n this.resizeBtnInit();\n if (this.quickToolObj) {\n this.quickToolObj.imageQTBar.hidePopup();\n }\n if (target.classList.contains('e-rte-topLeft')) {\n this.resizeBtnStat.topLeft = true;\n }\n if (target.classList.contains('e-rte-topRight')) {\n this.resizeBtnStat.topRight = true;\n }\n if (target.classList.contains('e-rte-botLeft')) {\n this.resizeBtnStat.botLeft = true;\n }\n if (target.classList.contains('e-rte-botRight')) {\n this.resizeBtnStat.botRight = true;\n }\n if (Browser.isDevice && this.contentModule.getEditPanel().contains(this.imgResizeDiv) &&\n !this.imgResizeDiv.classList.contains('e-mob-span')) {\n addClass([this.imgResizeDiv], 'e-mob-span');\n }\n else {\n var args = { event: e, requestType: 'images' };\n this.parent.trigger(events.resizeStart, args, function (resizeStartArgs) {\n if (resizeStartArgs.cancel) {\n _this.cancelResizeAction();\n }\n });\n }\n EventHandler.add(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd, this);\n }\n };\n Image.prototype.imageClick = function (e) {\n if (Browser.isDevice) {\n if ((e.target.tagName === 'IMG' &&\n e.target.parentElement.tagName === 'A') ||\n (e.target.tagName === 'IMG')) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'false');\n e.target.focus();\n }\n else {\n if (!this.parent.readonly) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'true');\n }\n }\n }\n if (e.target.tagName === 'IMG' &&\n e.target.parentElement.tagName === 'A') {\n e.preventDefault();\n }\n };\n Image.prototype.onCutHandler = function () {\n if (this.imgResizeDiv && this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n this.cancelResizeAction();\n }\n };\n Image.prototype.imageResize = function (e) {\n this.resizeBtnInit();\n this.imgEle = e;\n addClass([this.imgEle], 'e-resize');\n this.imgResizeDiv = this.parent.createElement('span', { className: 'e-img-resize' + ' ' + this.parent.cssClass, id: this.rteID + '_imgResize' });\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-topLeft' + ' ' + this.parent.cssClass, styles: 'cursor: nwse-resize'\n }));\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-topRight' + ' ' + this.parent.cssClass, styles: 'cursor: nesw-resize'\n }));\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-botLeft' + ' ' + this.parent.cssClass, styles: 'cursor: nesw-resize'\n }));\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-botRight' + ' ' + this.parent.cssClass, styles: 'cursor: nwse-resize'\n }));\n if (Browser.isDevice) {\n addClass([this.imgResizeDiv], 'e-mob-rte');\n }\n e.style.outline = '2px solid #4a90e2';\n this.imgResizePos(e, this.imgResizeDiv);\n this.resizeImgDupPos(e);\n this.contentModule.getEditPanel().appendChild(this.imgResizeDiv);\n EventHandler.add(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing, this);\n };\n Image.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Image.prototype.getPointY = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageY;\n }\n else {\n return e.pageY;\n }\n };\n Image.prototype.imgResizePos = function (e, imgResizeDiv) {\n var pos = this.calcPos(e);\n var top = pos.top;\n var left = pos.left;\n var imgWid = e.getBoundingClientRect().width;\n var imgHgt = e.getBoundingClientRect().height;\n var borWid = (Browser.isDevice) ? (4 * parseInt((e.style.outline.slice(-3)), 10)) + 2 :\n (2 * parseInt((e.style.outline.slice(-3)), 10)) + 2; //span border width + image outline width\n var devWid = ((Browser.isDevice) ? 0 : 2); // span border width\n imgResizeDiv.querySelector('.e-rte-botLeft').style.left = (left - borWid) + 'px';\n imgResizeDiv.querySelector('.e-rte-botLeft').style.top = ((imgHgt - borWid) + top) + 'px';\n imgResizeDiv.querySelector('.e-rte-botRight').style.left = ((imgWid - (borWid - devWid)) + left) + 'px';\n imgResizeDiv.querySelector('.e-rte-botRight').style.top = ((imgHgt - borWid) + top) + 'px';\n imgResizeDiv.querySelector('.e-rte-topRight').style.left = ((imgWid - (borWid - devWid)) + left) + 'px';\n imgResizeDiv.querySelector('.e-rte-topRight').style.top = (top - (borWid)) + 'px';\n imgResizeDiv.querySelector('.e-rte-topLeft').style.left = (left - borWid) + 'px';\n imgResizeDiv.querySelector('.e-rte-topLeft').style.top = (top - borWid) + 'px';\n };\n Image.prototype.calcPos = function (elem) {\n var ignoreOffset = ['TD', 'TH', 'TABLE', 'A'];\n var parentOffset = { top: 0, left: 0 };\n var elementOffset;\n var doc = elem.ownerDocument;\n var offsetParent = ((elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption') ||\n ignoreOffset.indexOf(elem.offsetParent.tagName) > -1)) ?\n closest(elem, '#' + this.parent.getID() + '_rte-edit-view') : elem.offsetParent) || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n if (elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption'))) {\n elementOffset = elem.getBoundingClientRect();\n return {\n top: elementOffset.top - parentOffset.top,\n left: elementOffset.left - parentOffset.left\n };\n }\n else {\n return {\n top: elem.offsetTop,\n left: elem.offsetLeft\n };\n }\n };\n Image.prototype.setAspectRatio = function (img, expectedX, expectedY, e) {\n if (isNullOrUndefined(img.width)) {\n return;\n }\n // eslint-disable-next-line\n var width = img.style.width !== '' ? img.style.width.match(/^\\d+(\\.\\d*)?%$/g) ? parseFloat(img.style.width) :\n parseInt(img.style.width, 10) : img.width;\n var height = img.style.height !== '' ? parseInt(img.style.height, 10) : img.height;\n if (width > height) {\n img.style.minWidth = this.parent.insertImageSettings.minWidth === 0 ? '20px' : formatUnit(this.parent.insertImageSettings.minWidth);\n if (this.parent.insertImageSettings.resizeByPercent) {\n if (parseInt('' + img.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {\n var original = img.offsetWidth + this.mouseX;\n var finalWidthByPerc = (original / img.offsetWidth) * (parseFloat(img.style.width).toString() === 'NaN' ? (img.offsetWidth / (parseFloat(getComputedStyle(this.parent.element).width)) * 100) : parseFloat(img.style.width));\n img.style.width = ((finalWidthByPerc > 3) ? finalWidthByPerc : 3) + '%';\n }\n else {\n img.style.width = this.pixToPerc((width / height * expectedY), (img.previousElementSibling || img.parentElement)) + '%';\n }\n img.style.height = null;\n img.removeAttribute('height');\n }\n else if (img.style.width === '' && img.style.height !== '') {\n img.style.height = expectedY + 'px';\n }\n else if (img.style.width !== '' && img.style.height === '') {\n var currentWidth = ((width / height * expectedY) + width / height) <\n (this.parent.inputElement.getBoundingClientRect().right - 32) ?\n ((width / height * expectedY) + width / height) : (this.parent.inputElement.getBoundingClientRect().right - 32);\n img.style.width = currentWidth.toString() + 'px';\n }\n else if (img.style.width !== '') {\n var currentWidth = (width / height * expectedY) < (this.parent.inputElement.getBoundingClientRect().right - 32) ?\n (width / height * expectedY) : (this.parent.inputElement.getBoundingClientRect().right - 32);\n img.style.width = currentWidth + 'px';\n img.style.height = expectedY + 'px';\n }\n else {\n if (this.parent.iframeSettings.enable) {\n img.setAttribute('width', (img.width + this.mouseX).toString());\n }\n else {\n var currentWidth = img.offsetWidth === 0 ? img.width + this.mouseX + parseInt(img.style.outlineWidth.split('p')[0], 10) : img.offsetWidth + this.mouseX;\n img.setAttribute('width', (currentWidth).toString());\n }\n }\n }\n else if (height > width) {\n if (this.parent.insertImageSettings.resizeByPercent) {\n if (parseInt('' + img.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {\n var original = img.offsetWidth + this.mouseX;\n var finalWidthByPerc = (original / img.offsetWidth) * (parseFloat(img.style.width).toString() === 'NaN' ?\n (img.offsetWidth / (parseFloat(getComputedStyle(this.parent.element).width)) * 100) :\n parseFloat(img.style.width));\n img.style.width = ((finalWidthByPerc > 3) ? finalWidthByPerc : 3) + '%';\n }\n else {\n img.style.width = this.pixToPerc((expectedX / height * expectedY), (img.previousElementSibling || img.parentElement)) + '%';\n }\n img.style.height = null;\n img.removeAttribute('height');\n }\n else if (img.style.width !== '') {\n img.style.width = expectedX + 'px';\n img.style.height = (height / width * expectedX) + 'px';\n }\n else {\n img.setAttribute('width', this.resizeBtnStat.botRight ? (this.getPointX(e.event) - img.getBoundingClientRect().left).toString() : expectedX.toString());\n }\n }\n else {\n if (this.parent.insertImageSettings.resizeByPercent) {\n img.style.width = this.pixToPerc(expectedX, (img.previousElementSibling || img.parentElement)) + '%';\n img.style.height = null;\n img.removeAttribute('height');\n }\n else {\n img.style.width = expectedX + 'px';\n img.style.height = expectedX + 'px';\n }\n }\n };\n Image.prototype.pixToPerc = function (expected, parentEle) {\n return expected / parseFloat(getComputedStyle(parentEle).width) * 100;\n };\n Image.prototype.imgDupMouseMove = function (width, height, e) {\n var _this = this;\n var args = { event: e, requestType: 'images' };\n this.parent.trigger(events.onResize, args, function (resizingArgs) {\n if (resizingArgs.cancel) {\n _this.cancelResizeAction();\n }\n else {\n if ((parseInt(_this.parent.insertImageSettings.minWidth, 10) >= parseInt(width, 10) ||\n (parseInt(_this.parent.getInsertImgMaxWidth(), 10) <= parseInt(width, 10) &&\n isNOU(_this.imgEle.style.width)))) {\n return;\n }\n if (!_this.parent.insertImageSettings.resizeByPercent &&\n (parseInt(_this.parent.insertImageSettings.minHeight, 10) >= parseInt(height, 10) ||\n parseInt(_this.parent.insertImageSettings.maxHeight, 10) <= parseInt(height, 10))) {\n return;\n }\n _this.imgEle.parentElement.style.cursor = 'pointer';\n _this.setAspectRatio(_this.imgEle, parseInt(width, 10), parseInt(height, 10), args);\n _this.resizeImgDupPos(_this.imgEle);\n _this.imgResizePos(_this.imgEle, _this.imgResizeDiv);\n _this.parent.setContentHeight('', false);\n }\n });\n };\n Image.prototype.resizing = function (e) {\n if (!this.parent) {\n this.cancelResizeAction();\n return;\n }\n if (this.imgEle.offsetWidth >= this.parent.getInsertImgMaxWidth()) {\n this.imgEle.style.maxHeight = this.imgEle.offsetHeight + 'px';\n }\n else if (isNOU(this.parent.insertImageSettings.maxHeight)) {\n this.imgEle.style.maxHeight = '';\n }\n this.imgEle.style.maxWidth = this.parent.getInsertImgMaxWidth() + 'px';\n var pageX = this.getPointX(e);\n var pageY = this.getPointY(e);\n var mouseX = (this.resizeBtnStat.botLeft || this.resizeBtnStat.topLeft) ? -(pageX - this.pageX) : (pageX - this.pageX);\n var mouseY = (this.resizeBtnStat.botLeft || this.resizeBtnStat.topLeft) ? -(pageY - this.pageY) : (pageY - this.pageY);\n var width = parseInt(this.imgDupPos.width, 10) + mouseX;\n var height = parseInt(this.imgDupPos.height, 10) + mouseY;\n this.mouseX = mouseX;\n this.pageX = pageX;\n this.pageY = pageY;\n if (this.resizeBtnStat.botRight) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.botLeft) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.topRight) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.topLeft) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n };\n Image.prototype.cancelResizeAction = function () {\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n if (this.imgEle && this.imgResizeDiv && this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n detach(this.imgResizeDiv);\n this.imgEle.style.outline = '';\n this.imgResizeDiv = null;\n this.pageX = null;\n this.pageY = null;\n }\n };\n Image.prototype.resizeImgDupPos = function (e) {\n this.imgDupPos = {\n width: (e.style.width !== '' && (this.parent.insertImageSettings &&\n !this.parent.insertImageSettings.resizeByPercent)) ? this.imgEle.style.width : e.width + 'px',\n height: (e.style.height !== '') ? this.imgEle.style.height : e.height + 'px'\n };\n };\n Image.prototype.resizeBtnInit = function () {\n return this.resizeBtnStat = { botLeft: false, botRight: false, topRight: false, topLeft: false };\n };\n Image.prototype.onToolbarAction = function (args) {\n if (isIDevice()) {\n this.parent.notify(events.selectionRestore, {});\n }\n var item = args.args.item;\n switch (item.subCommand) {\n case 'Replace':\n if (this.parent.fileManagerSettings.enable) {\n this.parent.notify(events.renderFileManager, args);\n }\n else {\n this.parent.notify(events.insertImage, args);\n }\n break;\n case 'Caption':\n this.parent.notify(events.imageCaption, args);\n break;\n case 'InsertLink':\n this.parent.notify(events.imageLink, args);\n break;\n case 'AltText':\n this.parent.notify(events.imageAlt, args);\n break;\n case 'Remove':\n this.parent.notify(events.imageDelete, args);\n break;\n case 'Dimension':\n this.parent.notify(events.imageSize, args);\n break;\n case 'OpenImageLink':\n this.openImgLink(args);\n break;\n case 'EditImageLink':\n this.editImgLink(args);\n break;\n case 'RemoveImageLink':\n this.removeImgLink(args);\n break;\n }\n };\n Image.prototype.openImgLink = function (e) {\n var target = e.selectParent[0].parentNode.target === '' ? '_self' : '_blank';\n this.parent.formatter.process(this.parent, e.args, e.args, {\n url: e.selectParent[0].parentNode.href, target: target, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n };\n Image.prototype.editImgLink = function (e) {\n var selectParentEle = e.selectParent[0].parentNode;\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var inputDetails = {\n url: selectParentEle.href, target: selectParentEle.target,\n header: 'Edit Link', btnText: linkUpdate\n };\n this.insertImgLink(e, inputDetails);\n };\n Image.prototype.removeImgLink = function (e) {\n if (Browser.isIE) {\n this.contentModule.getEditPanel().focus();\n }\n e.selection.restore();\n var isCapLink = (this.contentModule.getEditPanel().contains(this.captionEle) && select('a', this.captionEle)) ?\n true : false;\n var selectParent = isCapLink ? [this.captionEle] : [e.selectNode[0].parentElement];\n this.parent.formatter.process(this.parent, e.args, e.args, {\n insertElement: e.selectNode[0], selectParent: selectParent, selection: e.selection,\n subCommand: e.args.item.subCommand\n });\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n if (!isNullOrUndefined(e.selectParent)) {\n removeClass([e.selectParent[0]], 'e-img-focus');\n }\n }\n if (isCapLink) {\n select('.e-img-inner', this.captionEle).focus();\n }\n };\n Image.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n this.deletedImg = [];\n var isCursor;\n var keyCodeValues = [27, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,\n 44, 45, 9, 16, 17, 18, 19, 20, 33, 34, 35, 36, 37, 38, 39, 40, 91, 92, 93, 144, 145, 182, 183];\n if (this.parent.editorMode === 'HTML') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n isCursor = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n }\n if (!isCursor && this.parent.editorMode === 'HTML' && keyCodeValues.indexOf(originalEvent.which) < 0) {\n var nodes = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].nodeName === 'IMG') {\n this.deletedImg.push(nodes[i]);\n }\n }\n }\n if (this.parent.editorMode === 'HTML' && ((originalEvent.which === 8 && originalEvent.code === 'Backspace') ||\n (originalEvent.which === 46 && originalEvent.code === 'Delete'))) {\n var isCursor_1 = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n if ((originalEvent.which === 8 && originalEvent.code === 'Backspace' && isCursor_1)) {\n this.checkImageBack(range);\n }\n else if ((originalEvent.which === 46 && originalEvent.code === 'Delete' && isCursor_1)) {\n this.checkImageDel(range);\n }\n }\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) &&\n originalEvent.code !== 'KeyK') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&\n (selectParentEle[0].tagName === 'IMG') && selectParentEle[0].parentElement) {\n var prev = selectParentEle[0].parentElement.childNodes[0];\n if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n this.removeResizeEle();\n }\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), prev, prev, prev.textContent.length, prev.textContent.length);\n removeClass([selectParentEle[0]], 'e-img-focus');\n this.quickToolObj.imageQTBar.hidePopup();\n }\n }\n if (originalEvent.ctrlKey && (originalEvent.keyCode === 89 || originalEvent.keyCode === 90)) {\n this.undoStack({ subCommand: (originalEvent.keyCode === 90 ? 'undo' : 'redo') });\n }\n if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {\n if (selectNodeEle && selectNodeEle[0].nodeName === 'IMG' && selectNodeEle.length < 1) {\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection)) {\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n }\n originalEvent.preventDefault();\n var event_1 = {\n selectNode: selectNodeEle, selection: save, selectParent: selectParentEle,\n args: {\n item: { command: 'Images', subCommand: 'Remove' },\n originalEvent: originalEvent\n }\n };\n this.deleteImg(event_1, originalEvent.keyCode);\n }\n if (this.parent.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n this.removeResizeEle();\n }\n }\n if (originalEvent.code === 'Backspace') {\n originalEvent.action = 'backspace';\n }\n switch (originalEvent.action) {\n case 'escape':\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.close();\n }\n break;\n case 'backspace':\n case 'delete':\n for (var i = 0; i < this.deletedImg.length; i++) {\n var src = this.deletedImg[i].src;\n this.imageRemovePost(src);\n }\n if (this.parent.editorMode !== 'Markdown') {\n if (range.startContainer.nodeType === 3) {\n if (originalEvent.code === 'Backspace') {\n if (range.startContainer.previousElementSibling && range.startOffset === 0 &&\n range.startContainer.previousElementSibling.classList.contains(classes.CLS_CAPTION) &&\n range.startContainer.previousElementSibling.classList.contains(classes.CLS_CAPINLINE)) {\n detach(range.startContainer.previousElementSibling);\n }\n }\n else {\n if (range.startContainer.nextElementSibling &&\n range.endContainer.textContent.length === range.endOffset &&\n range.startContainer.nextElementSibling.classList.contains(classes.CLS_CAPTION) &&\n range.startContainer.nextElementSibling.classList.contains(classes.CLS_CAPINLINE)) {\n detach(range.startContainer.nextElementSibling);\n }\n }\n }\n else if ((range.startContainer.nodeType === 1 &&\n range.startContainer.querySelector('.' + classes.CLS_CAPTION + '.' + classes.CLS_CAPINLINE))) {\n detach(range.startContainer.querySelector('.' + classes.CLS_CAPTION + '.' + classes.CLS_CAPINLINE));\n }\n else if (range.startContainer.nodeType === 1 &&\n range.startContainer.querySelector('.' + classes.CLS_CAPTION + '.' + classes.CLS_IMGBREAK)) {\n detach(range.startContainer.querySelector('.' + classes.CLS_CAPTION + '.' + classes.CLS_IMGBREAK));\n }\n }\n break;\n case 'insert-image':\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection)) {\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n }\n this.openDialog(true, originalEvent, save, selectNodeEle, selectParentEle);\n originalEvent.preventDefault();\n break;\n }\n };\n Image.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n if (!isInternal && !isNOU(this.parent.formatter.editorManager.nodeSelection)) {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = selection;\n selectNodeEle = ele;\n selectParentEle = parentEle;\n }\n if (this.parent.editorMode === 'HTML') {\n this.insertImage({\n args: {\n item: { command: 'Images', subCommand: 'Image' },\n originalEvent: event,\n name: !isInternal ? 'showDialog' : null\n },\n selectNode: selectNodeEle,\n selection: save,\n selectParent: selectParentEle\n });\n }\n else {\n this.insertImage({\n args: {\n item: { command: 'Images', subCommand: 'Image' },\n originalEvent: event,\n name: !isInternal ? 'showDialog' : null\n },\n member: 'image',\n text: this.parent.formatter.editorManager.markdownSelection.getSelectedText(this.parent.contentModule.getEditPanel()),\n module: 'Markdown',\n name: 'insertImage'\n });\n }\n };\n Image.prototype.showDialog = function () {\n this.openDialog(false);\n this.setCssClass({ cssClass: this.parent.cssClass });\n };\n Image.prototype.closeDialog = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n // eslint-disable-next-line\n Image.prototype.onKeyUp = function (event) {\n if (!isNOU(this.deletedImg) && this.deletedImg.length > 0) {\n for (var i = 0; i < this.deletedImg.length; i++) {\n var args = {\n element: this.deletedImg[i],\n src: this.deletedImg[i].getAttribute('src')\n };\n this.parent.trigger(events.afterImageDelete, args);\n }\n }\n };\n Image.prototype.checkImageBack = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === 0 &&\n !isNOU(range.startContainer.previousSibling) && range.startContainer.previousSibling.nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.previousSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNOU(range.startContainer.childNodes[range.startOffset - 1]) &&\n range.startContainer.childNodes[range.startOffset - 1].nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.childNodes[range.startOffset - 1]);\n }\n };\n Image.prototype.checkImageDel = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === range.startContainer.textContent.length &&\n !isNOU(range.startContainer.nextSibling) && range.startContainer.nextSibling.nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.nextSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNOU(range.startContainer.childNodes[range.startOffset]) &&\n range.startContainer.childNodes[range.startOffset].nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.childNodes[range.startOffset]);\n }\n };\n Image.prototype.alignmentSelect = function (e) {\n var item = e.item;\n if (!document.body.contains(document.body.querySelector('.e-rte-quick-toolbar')) || item.command !== 'Images') {\n return;\n }\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectNodeEle = (selectNodeEle[0].nodeName === 'IMG') ? selectNodeEle : [this.imgEle];\n var args = { args: e, selectNode: selectNodeEle };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n switch (item.subCommand) {\n case 'JustifyLeft':\n this.alignImage(args, 'JustifyLeft');\n break;\n case 'JustifyCenter':\n this.alignImage(args, 'JustifyCenter');\n break;\n case 'JustifyRight':\n this.alignImage(args, 'JustifyRight');\n break;\n case 'Inline':\n this.inline(args);\n break;\n case 'Break':\n this.break(args);\n break;\n }\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n removeClass([selectNodeEle[0]], 'e-img-focus');\n }\n this.cancelResizeAction();\n };\n Image.prototype.imageWithLinkQTBarItemUpdate = function () {\n var separator;\n var items = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item');\n for (var i = 0; i < items.length; i++) {\n if (items[i].getAttribute('title') === this.i10n.getConstant('openLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('editLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('removeLink')) {\n addClass([items[i]], 'e-link-groups');\n items[i].style.display = 'none';\n }\n else if (items[i].getAttribute('title') === 'Insert Link') {\n items[i].style.display = '';\n }\n else if (items[i].classList.contains('e-rte-horizontal-separator')) {\n // eslint-disable-next-line\n separator = items[i];\n detach(items[i]);\n }\n }\n var newItems = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item:not(.e-link-groups)');\n this.quickToolObj.imageQTBar.addQTBarItem(['-'], Math.round(newItems.length / 2));\n };\n Image.prototype.showImageQuickToolbar = function (e) {\n var _this = this;\n if (e.type !== 'Images' || isNullOrUndefined(this.parent.quickToolbarModule)\n || isNullOrUndefined(this.parent.quickToolbarModule.imageQTBar) || isNullOrUndefined(e.args)) {\n return;\n }\n this.quickToolObj = this.parent.quickToolbarModule;\n var args = e.args;\n var target = e.elements;\n [].forEach.call(e.elements, function (element, index) {\n if (index === 0) {\n target = element;\n }\n });\n if (target && !closest(target, 'a')) {\n this.imageWithLinkQTBarItemUpdate();\n }\n if (target.nodeName === 'IMG') {\n addClass([target], ['e-img-focus']);\n }\n var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + args.clientY : args.pageY;\n if (this.parent.quickToolbarModule.imageQTBar) {\n if (e.isNotify) {\n setTimeout(function () {\n _this.parent.formatter.editorManager.nodeSelection.Clear(_this.contentModule.getDocument());\n _this.parent.formatter.editorManager.nodeSelection.setSelectionContents(_this.contentModule.getDocument(), target);\n _this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);\n }, 400);\n }\n else {\n this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);\n }\n }\n };\n Image.prototype.hideImageQuickToolbar = function () {\n if (!isNullOrUndefined(this.contentModule.getEditPanel().querySelector('.e-img-focus'))) {\n removeClass([this.contentModule.getEditPanel().querySelector('.e-img-focus')], 'e-img-focus');\n if (this.quickToolObj && this.quickToolObj.imageQTBar && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n }\n }\n };\n Image.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly) {\n this.hideImageQuickToolbar();\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n if ((showOnRightClick && args.which === 1) && !isNullOrUndefined(args.target) &&\n args.target.tagName === 'IMG') {\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), args.target);\n }\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.imageQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.imageQTBar.element.classList.contains('e-rte-pop');\n if (target.nodeName === 'IMG' && this.parent.quickToolbarModule) {\n if (isPopupOpen) {\n return;\n }\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), target);\n if (isIDevice()) {\n this.parent.notify(events.selectionSave, e);\n }\n addClass([target], 'e-img-focus');\n var items = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item');\n var separator = void 0;\n if (closest(target, 'a')) {\n for (var i = 0; i < items.length; i++) {\n if (items[i].getAttribute('title') === this.i10n.getConstant('openLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('editLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('removeLink')) {\n items[i].style.display = '';\n removeClass([items[i]], 'e-link-groups');\n }\n else if (items[i].getAttribute('title') === 'Insert Link') {\n items[i].style.display = 'none';\n }\n else if (items[i].classList.contains('e-rte-horizontal-separator')) {\n // eslint-disable-next-line\n separator = items[i];\n detach(items[i]);\n }\n }\n var newItems = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item:not(.e-link-groups)');\n this.quickToolObj.imageQTBar.addQTBarItem(['-'], Math.round(newItems.length / 2));\n }\n else if (!closest(target, 'a')) {\n this.imageWithLinkQTBarItemUpdate();\n }\n this.showImageQuickToolbar({ args: args, type: 'Images', elements: [args.target] });\n }\n else {\n this.hideImageQuickToolbar();\n }\n }\n };\n Image.prototype.insertImgLink = function (e, inputDetails) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n this.imagDialog(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n var linkWrap = this.parent.createElement('div', { className: 'e-img-linkwrap' + ' ' + this.parent.cssClass });\n var linkUrl = this.i10n.getConstant('linkurl');\n var content = '
' +\n '
' +\n '
' + '
' +\n '
';\n var contentElem = parseHtml(content);\n linkWrap.appendChild(contentElem);\n var linkTarget = linkWrap.querySelector('.e-rte-linkTarget');\n var inputLink = linkWrap.querySelector('.e-img-link');\n var linkOpenLabel = this.i10n.getConstant('linkOpenInNewWindow');\n this.checkBoxObj = new CheckBox({\n label: linkOpenLabel, checked: true, enableRtl: this.parent.enableRtl, cssClass: this.parent.cssClass,\n change: function (e) {\n if (e.checked) {\n target_1 = '_blank';\n }\n else {\n target_1 = null;\n }\n }\n });\n this.checkBoxObj.isStringTemplate = true;\n this.checkBoxObj.createElement = this.parent.createElement;\n this.checkBoxObj.appendTo(linkTarget);\n var target_1 = this.checkBoxObj.checked ? '_blank' : null;\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var linkargs_1 = {\n args: e.args,\n selfImage: this, selection: e.selection,\n selectNode: e.selectNode, selectParent: e.selectParent, link: inputLink, target: target_1\n };\n this.dialogObj.setProperties({\n height: 'inherit',\n width: '290px',\n header: this.parent.localeObj.getConstant('imageInsertLinkHeader'),\n content: linkWrap,\n position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertlink(linkargs_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-link' + ' ' + this.parent.cssClass, isPrimary: true\n }\n }],\n cssClass: this.dialogObj.cssClass + ' e-rte-img-link-dialog'\n });\n if (!isNOU(this.parent.cssClass)) {\n this.dialogObj.setProperties({ cssClass: this.parent.cssClass });\n }\n if (!isNullOrUndefined(inputDetails)) {\n inputLink.value = inputDetails.url;\n // eslint-disable-next-line\n (inputDetails.target) ? this.checkBoxObj.checked = true : this.checkBoxObj.checked = false;\n this.dialogObj.header = inputDetails.header;\n }\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Image.prototype.insertAltText = function (e) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n this.imagDialog(e);\n var altText = this.i10n.getConstant('altText');\n if (!isNullOrUndefined(this.dialogObj)) {\n var altWrap = this.parent.createElement('div', { className: 'e-img-altwrap' + ' ' + this.parent.cssClass });\n var altHeader = this.i10n.getConstant('alternateHeader');\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var getAlt = (e.selectNode[0].getAttribute('alt') === null) ? '' :\n e.selectNode[0].getAttribute('alt');\n var content = '
' +\n '' +\n '
';\n var contentElem = parseHtml(content);\n altWrap.appendChild(contentElem);\n var inputAlt = altWrap.querySelector('.e-img-alt');\n var altArgs_1 = {\n args: e.args, selfImage: this, selection: e.selection, selectNode: e.selectNode,\n alt: inputAlt\n };\n this.dialogObj.setProperties({\n height: 'inherit', width: '290px', header: altHeader, content: altWrap, position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertAlt(altArgs_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-alt' + ' ' + this.parent.cssClass, isPrimary: true\n }\n }],\n cssClass: this.dialogObj.cssClass + ' e-rte-img-alt-dialog'\n });\n if (!isNOU(this.parent.cssClass)) {\n this.dialogObj.setProperties({ cssClass: this.parent.cssClass });\n }\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Image.prototype.insertAlt = function (e) {\n if (!isNullOrUndefined(e.alt)) {\n e.selection.restore();\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n var altText = e.alt.value;\n this.parent.formatter.process(this.parent, e.args, e.args, {\n altText: altText, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n this.dialogObj.hide({ returnValue: false });\n }\n };\n Image.prototype.insertlink = function (e) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var url = e.link.value;\n if (url === '') {\n addClass([e.link], 'e-error');\n e.link.setSelectionRange(0, url.length);\n e.link.focus();\n return;\n }\n if (!this.isUrl(url)) {\n url = 'http://' + url;\n }\n else {\n removeClass([e.link], 'e-error');\n }\n var proxy = e.selfImage;\n if (proxy.parent.editorMode === 'HTML') {\n e.selection.restore();\n }\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n if (e.selectNode[0].parentElement.nodeName === 'A') {\n proxy.parent.formatter.process(proxy.parent, e.args, e.args, {\n url: url, target: proxy.checkBoxObj.checked ? '_blank' : null, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n proxy.dialogObj.hide({ returnValue: true });\n return;\n }\n proxy.parent.formatter.process(proxy.parent, e.args, e.args, {\n url: url, target: proxy.checkBoxObj.checked ? '_blank' : null, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand, selection: e.selection\n });\n var captionEle = closest(e.selectNode[0], '.e-img-caption');\n if (captionEle) {\n select('.e-img-inner', captionEle).focus();\n }\n if (captionEle) {\n select('.e-img-inner', captionEle).focus();\n }\n proxy.dialogObj.hide({ returnValue: false });\n };\n Image.prototype.isUrl = function (url) {\n // eslint-disable-next-line\n var regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/gi;\n return regexp.test(url);\n };\n Image.prototype.deleteImg = function (e, keyCode) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var args = {\n element: e.selectNode[0],\n src: e.selectNode[0].getAttribute('src')\n };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n e.selection.restore();\n if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n this.removeResizeEle();\n }\n this.parent.formatter.process(this.parent, e.args, e.args, {\n selectNode: e.selectNode,\n captionClass: classes.CLS_CAPTION,\n subCommand: e.args.item.subCommand\n });\n this.imageRemovePost(args.src);\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n }\n this.cancelResizeAction();\n if (isNullOrUndefined(keyCode)) {\n this.parent.trigger(events.afterImageDelete, args);\n }\n };\n Image.prototype.imageRemovePost = function (src) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var absoluteUrl = '';\n if (isNOU(this.parent.insertImageSettings.removeUrl) || this.parent.insertImageSettings.removeUrl === '') {\n return;\n }\n if (src.indexOf('http://') > -1 || src.indexOf('https://') > -1) {\n absoluteUrl = src;\n }\n else {\n absoluteUrl = new URL(src, document.baseURI).href;\n }\n this.removingImgName = absoluteUrl.replace(/^.*[\\\\/]/, '');\n var xhr = new XMLHttpRequest();\n // eslint-disable-next-line @typescript-eslint/tslint/config\n xhr.addEventListener('readystatechange', function () {\n if (this.readyState === 4 && this.status === 200) {\n proxy.triggerPost(this.response);\n }\n });\n xhr.open('GET', absoluteUrl);\n xhr.responseType = 'blob';\n xhr.send();\n };\n Image.prototype.triggerPost = function (response) {\n var removeUrl = this.parent.insertImageSettings.removeUrl;\n if (isNOU(removeUrl) || removeUrl === '') {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var file = new File([response], this.removingImgName);\n var ajax = new Ajax(removeUrl, 'POST', true, null);\n var formData = new FormData();\n formData.append('UploadFiles', file);\n ajax.send(formData);\n };\n Image.prototype.caption = function (e) {\n var selectNode = e.selectNode[0];\n if (selectNode.nodeName !== 'IMG') {\n return;\n }\n e.selection.restore();\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n this.cancelResizeAction();\n addClass([selectNode], 'e-rte-image');\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Caption';\n if (!isNullOrUndefined(closest(selectNode, '.' + classes.CLS_CAPTION))) {\n detach(closest(selectNode, '.' + classes.CLS_CAPTION));\n if (Browser.isIE) {\n this.contentModule.getEditPanel().focus();\n e.selection.restore();\n }\n if (selectNode.parentElement.tagName === 'A') {\n this.parent.formatter.process(this.parent, e.args, e.args, { insertElement: selectNode.parentElement, selectNode: e.selectNode, subCommand: subCommand });\n }\n else {\n this.parent.formatter.process(this.parent, e.args, e.args, { insertElement: selectNode, selectNode: e.selectNode, subCommand: subCommand });\n }\n }\n else {\n this.captionEle = this.parent.createElement('span', {\n className: classes.CLS_CAPTION + ' ' + classes.CLS_RTE_CAPTION + ' ' + this.parent.cssClass,\n attrs: { contenteditable: 'false', draggable: 'false', style: 'width:' + this.parent.insertImageSettings.width }\n });\n var imgWrap = this.parent.createElement('span', { className: 'e-img-wrap' + ' ' + this.parent.cssClass });\n var imgInner = this.parent.createElement('span', { className: 'e-img-inner' + ' ' + this.parent.cssClass,\n attrs: { contenteditable: 'true' } });\n var parent_1 = e.selectNode[0].parentElement;\n if (parent_1.tagName === 'A') {\n parent_1.setAttribute('contenteditable', 'true');\n }\n imgWrap.appendChild(parent_1.tagName === 'A' ? parent_1 : e.selectNode[0]);\n imgWrap.appendChild(imgInner);\n var imgCaption = this.i10n.getConstant('imageCaption');\n imgInner.innerHTML = imgCaption;\n this.captionEle.appendChild(imgWrap);\n if (selectNode.classList.contains(classes.CLS_IMGINLINE)) {\n addClass([this.captionEle], classes.CLS_CAPINLINE);\n }\n if (selectNode.classList.contains(classes.CLS_IMGBREAK)) {\n addClass([this.captionEle], classes.CLS_IMGBREAK);\n }\n if (selectNode.classList.contains(classes.CLS_IMGLEFT)) {\n addClass([this.captionEle], classes.CLS_IMGLEFT);\n }\n if (selectNode.classList.contains(classes.CLS_IMGRIGHT)) {\n addClass([this.captionEle], classes.CLS_IMGRIGHT);\n }\n if (selectNode.classList.contains(classes.CLS_IMGCENTER)) {\n addClass([this.captionEle], classes.CLS_IMGCENTER);\n }\n this.parent.formatter.process(this.parent, e.args, e.args, { insertElement: this.captionEle, selectNode: e.selectNode, subCommand: subCommand });\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), imgInner.childNodes[0], imgInner.childNodes[0], 0, imgInner.childNodes[0].textContent.length);\n }\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n removeClass([selectNode], 'e-img-focus');\n }\n };\n Image.prototype.imageSize = function (e) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n this.imagDialog(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n var imgSizeHeader = this.i10n.getConstant('imageSizeHeader');\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var dialogContent = this.imgsizeInput(e);\n var selectObj_1 = { args: e.args, selfImage: this, selection: e.selection, selectNode: e.selectNode };\n this.dialogObj.setProperties({\n height: 'inherit', width: '290px', header: imgSizeHeader, content: dialogContent, position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertSize(selectObj_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-size' + ' ' + this.parent.cssClass, isPrimary: true\n }\n }],\n cssClass: this.dialogObj.cssClass + ' e-rte-img-size-dialog'\n });\n if (!isNOU(this.parent.cssClass)) {\n this.dialogObj.setProperties({ cssClass: this.parent.cssClass });\n }\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Image.prototype.break = function (e) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Break';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Image.prototype.inline = function (e) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Inline';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Image.prototype.alignImage = function (e, type) {\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : type;\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Image.prototype.clearDialogObj = function () {\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n Image.prototype.imagDialog = function (e) {\n var _this = this;\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n return;\n }\n var imgDialog = this.parent.createElement('div', { className: 'e-rte-img-dialog' + ' ' + this.parent.cssClass, id: this.rteID + '_image' });\n this.parent.element.appendChild(imgDialog);\n var imgInsert = this.i10n.getConstant('dialogInsert');\n var imglinkCancel = this.i10n.getConstant('dialogCancel');\n var imgHeader = this.i10n.getConstant('imageHeader');\n var selection = e.selection;\n var selectObj = { selfImage: this, selection: e.selection, args: e.args, selectParent: e.selectParent };\n var dialogModel = {\n header: imgHeader,\n cssClass: classes.CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px',\n position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },\n isModal: Browser.isDevice,\n buttons: [{\n click: this.insertImageUrl.bind(selectObj),\n buttonModel: { content: imgInsert, cssClass: 'e-flat e-insertImage' + ' ' + this.parent.cssClass, isPrimary: true, disabled: true }\n },\n {\n click: function (e) {\n _this.cancelDialog(e);\n },\n buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: imglinkCancel }\n }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n if (_this.isImgUploaded) {\n _this.uploadObj.removing();\n }\n _this.parent.isBlur = false;\n if (event && event.event.returnValue) {\n if (_this.parent.editorMode === 'HTML') {\n selection.restore();\n }\n else {\n _this.parent.formatter.editorManager.markdownSelection.restore(_this.parent.contentModule.getEditPanel());\n }\n }\n _this.dialogObj.destroy();\n detach(_this.dialogObj.element);\n _this.dialogRenderObj.close(event);\n _this.dialogObj = null;\n }\n };\n var dialogContent = this.parent.createElement('div', { className: 'e-img-content' + ' ' + this.parent.cssClass });\n if ((!isNullOrUndefined(this.parent.insertImageSettings.path) && this.parent.editorMode === 'Markdown')\n || this.parent.editorMode === 'HTML') {\n dialogContent.appendChild(this.imgUpload(e));\n }\n var linkHeader = this.parent.createElement('div', { className: 'e-linkheader' + ' ' + this.parent.cssClass });\n var linkHeaderText = this.i10n.getConstant('imageLinkHeader');\n if (this.parent.editorMode === 'HTML') {\n linkHeader.innerHTML = linkHeaderText;\n }\n else {\n linkHeader.innerHTML = this.i10n.getConstant('mdimageLink');\n }\n dialogContent.appendChild(linkHeader);\n dialogContent.appendChild(this.imageUrlPopup(e));\n if (e.selectNode && e.selectNode[0].nodeName === 'IMG') {\n dialogModel.header = this.parent.localeObj.getConstant('editImageHeader');\n dialogModel.content = dialogContent;\n }\n else {\n dialogModel.content = dialogContent;\n }\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(imgDialog);\n if (isNullOrUndefined(this.dialogObj)) {\n return;\n }\n if (e.selectNode && e.selectNode[0].nodeName === 'IMG' && (e.name === 'insertImage')) {\n this.dialogObj.element.querySelector('.e-insertImage').textContent = this.parent.localeObj.getConstant('dialogUpdate');\n }\n imgDialog.style.maxHeight = 'inherit';\n if (this.quickToolObj) {\n if (this.quickToolObj.imageQTBar && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n if (!isNullOrUndefined(e.selectParent)) {\n removeClass([e.selectParent[0]], 'e-img-focus');\n }\n }\n if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n }\n };\n // eslint-disable-next-line\n Image.prototype.cancelDialog = function (e) {\n this.parent.isBlur = false;\n this.dialogObj.hide({ returnValue: true });\n if (this.isImgUploaded) {\n this.uploadObj.removing();\n }\n };\n Image.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (target.nodeName === 'IMG') {\n this.imgEle = target;\n }\n if (!this.parent) {\n return;\n }\n if (target.nodeName !== '#document') {\n this.parent.currentTarget = e.target;\n }\n if (!isNullOrUndefined(this.dialogObj) && ((\n // eslint-disable-next-line\n !closest(target, '[id=' + \"'\" + this.dialogObj.element.id + \"'\" + ']') && this.parent.toolbarSettings.enable && this.parent.getToolbarElement() &&\n !this.parent.getToolbarElement().contains(e.target)) ||\n (this.parent.getToolbarElement() && this.parent.getToolbarElement().contains(e.target) &&\n !closest(target, '#' + this.parent.getID() + '_toolbar_Image') &&\n !target.querySelector('#' + this.parent.getID() + '_toolbar_Image')))) {\n /* eslint-disable */\n if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {\n }\n else {\n this.dialogObj.hide({ returnValue: true });\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n /* eslint-enable */\n }\n if (!(this.parent.iframeSettings.enable && !isNOU(this.parent.currentTarget) && this.parent.currentTarget.nodeName === 'IMG') &&\n e.target.tagName !== 'IMG' && this.imgResizeDiv && !(this.quickToolObj &&\n this.quickToolObj.imageQTBar && this.quickToolObj.imageQTBar.element.contains(e.target)) &&\n this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n this.cancelResizeAction();\n }\n if (this.contentModule.getEditPanel().querySelector('.e-img-resize') && !(this.parent.iframeSettings.enable && this.parent.currentTarget.nodeName === 'IMG')) {\n if (target.tagName !== 'IMG') {\n this.removeResizeEle();\n }\n if (target.tagName !== 'IMG' && !isNOU(this.imgEle)) {\n this.imgEle.style.outline = '';\n }\n else if (!isNOU(this.prevSelectedImgEle) && this.prevSelectedImgEle !== target) {\n this.prevSelectedImgEle.style.outline = '';\n }\n }\n };\n Image.prototype.removeResizeEle = function () {\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n detach(this.contentModule.getEditPanel().querySelector('.e-img-resize'));\n };\n Image.prototype.onWindowResize = function () {\n if (!isNOU(this.contentModule) && !isNOU(this.contentModule.getEditPanel().querySelector('.e-img-resize'))) {\n this.cancelResizeAction();\n }\n };\n // eslint-disable-next-line\n Image.prototype.imageUrlPopup = function (e) {\n var _this = this;\n var imgUrl = this.parent.createElement('div', { className: 'imgUrl' + ' ' + this.parent.cssClass });\n var placeUrl = this.i10n.getConstant('imageUrl');\n this.inputUrl = this.parent.createElement('input', {\n className: 'e-input e-img-url' + ' ' + this.parent.cssClass,\n attrs: { placeholder: placeUrl, spellcheck: 'false', 'aria-label': this.i10n.getConstant('imageLinkHeader') }\n });\n this.inputUrl.addEventListener('input', function () {\n if (!isNOU(_this.inputUrl)) {\n if (_this.inputUrl.value.length === 0) {\n _this.dialogObj.getButtons(0).element.disabled = true;\n }\n else {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n }\n });\n imgUrl.appendChild(this.inputUrl);\n return imgUrl;\n };\n // eslint-disable-next-line\n Image.prototype.insertImageUrl = function (e) {\n var proxy = this.selfImage;\n proxy.isImgUploaded = false;\n var url = proxy.inputUrl.value;\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n if (!isNullOrUndefined(proxy.uploadUrl) && proxy.uploadUrl.url !== '') {\n proxy.uploadUrl.cssClass = (proxy.parent.insertImageSettings.display === 'inline' ?\n classes.CLS_IMGINLINE : classes.CLS_IMGBREAK);\n proxy.dialogObj.hide({ returnValue: false });\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, proxy.uploadUrl);\n proxy.uploadUrl.url = '';\n if (proxy.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n proxy.imgEle.style.outline = '';\n proxy.removeResizeEle();\n }\n }\n else if (url !== '') {\n if (proxy.parent.editorMode === 'HTML' && isNullOrUndefined(closest(\n // eslint-disable-next-line\n this.selection.range.startContainer.parentNode, '[id=' + \"'\" + proxy.contentModule.getPanel().id + \"'\" + ']'))) {\n proxy.contentModule.getEditPanel().focus();\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.contentModule.getDocument());\n this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.contentModule.getDocument());\n this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var regex = /[\\w-]+.(jpg|png|jpeg|gif)/g;\n var matchUrl = (!isNullOrUndefined(url.match(regex)) && proxy.parent.editorMode === 'HTML') ? url.match(regex)[0] : '';\n var value = {\n cssClass: (proxy.parent.insertImageSettings.display === 'inline' ? classes.CLS_IMGINLINE : classes.CLS_IMGBREAK),\n url: url, selection: this.selection, altText: matchUrl,\n selectParent: this.selectParent, width: {\n width: proxy.parent.insertImageSettings.width, minWidth: proxy.parent.insertImageSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n },\n height: {\n height: proxy.parent.insertImageSettings.height, minHeight: proxy.parent.insertImageSettings.minHeight,\n maxHeight: proxy.parent.insertImageSettings.maxHeight\n }\n };\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);\n proxy.dialogObj.hide({ returnValue: false });\n }\n };\n Image.prototype.imgsizeInput = function (e) {\n var _this = this;\n var selectNode = e.selectNode[0];\n var imgHeight = this.i10n.getConstant('imageHeight');\n var imgWidth = this.i10n.getConstant('imageWidth');\n var imgSizeWrap = this.parent.createElement('div', { className: 'e-img-sizewrap' + ' ' + this.parent.cssClass });\n var widthVal = isNullOrUndefined(this.changedWidthValue) && (selectNode.style.width.toString() === 'auto' ||\n selectNode.style.width !== '') ? selectNode.style.width : !isNullOrUndefined(this.changedWidthValue) ?\n this.changedWidthValue : (parseInt(selectNode.getClientRects()[0].width.toString(), 10)).toString();\n var heightVal = isNullOrUndefined(this.changedHeightValue) && (selectNode.style.height.toString() === 'auto' ||\n selectNode.style.height !== '') ? selectNode.style.height : !isNullOrUndefined(this.changedHeightValue) ?\n this.changedHeightValue : (parseInt(selectNode.getClientRects()[0].height.toString(), 10)).toString();\n this.changedWidthValue = null;\n this.changedHeightValue = null;\n var content = '
' +\n '
' + '
' +\n '
';\n var contentElem = parseHtml(content);\n imgSizeWrap.appendChild(contentElem);\n this.widthNum = new TextBox({\n value: formatUnit(widthVal),\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass,\n input: function (e) {\n _this.inputWidthValue = formatUnit(_this.inputValue(e.value));\n }\n });\n this.widthNum.createElement = this.parent.createElement;\n this.widthNum.appendTo(imgSizeWrap.querySelector('#imgwidth'));\n this.heightNum = new TextBox({\n value: formatUnit(heightVal),\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass,\n input: function (e) {\n _this.inputHeightValue = formatUnit(_this.inputValue(e.value));\n }\n });\n this.heightNum.createElement = this.parent.createElement;\n this.heightNum.appendTo(imgSizeWrap.querySelector('#imgheight'));\n return imgSizeWrap;\n };\n Image.prototype.inputValue = function (value) {\n if (value === 'auto' || value.indexOf('%') !== -1 || value.indexOf('px') !== -1\n || value.match(/(\\d+)/)) {\n return value;\n }\n else {\n return 'auto';\n }\n };\n Image.prototype.insertSize = function (e) {\n e.selection.restore();\n var proxy = e.selfImage;\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n var dialogEle = proxy.dialogObj.element;\n this.changedWidthValue = this.inputWidthValue;\n this.changedHeightValue = this.inputHeightValue;\n var width = dialogEle.querySelector('.e-img-width').value;\n var height = dialogEle.parentElement.querySelector('.e-img-height').value;\n proxy.parent.formatter.process(this.parent, e.args, e.args, {\n width: width, height: height, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n if (this.imgResizeDiv) {\n proxy.imgResizePos(e.selectNode[0], this.imgResizeDiv);\n }\n proxy.dialogObj.hide({ returnValue: true });\n };\n Image.prototype.insertImage = function (e) {\n this.imagDialog(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.element.style.maxHeight = 'inherit';\n var dialogContent = this.dialogObj.element.querySelector('.e-img-content');\n if (((!isNullOrUndefined(this.parent.insertImageSettings.path) && this.parent.editorMode === 'Markdown')\n || this.parent.editorMode === 'HTML')) {\n document.getElementById(this.rteID + '_insertImage').focus();\n }\n else {\n dialogContent.querySelector('.e-img-url').focus();\n }\n }\n };\n Image.prototype.imgUpload = function (e) {\n var _this = this;\n var save;\n var selectParent;\n // eslint-disable-next-line\n var proxy = this;\n var iframe = proxy.parent.iframeSettings.enable;\n if (proxy.parent.editorMode === 'HTML' && (!iframe && isNullOrUndefined(closest(e.selection.range.startContainer.parentNode, '[id='\n // eslint-disable-next-line\n + \"'\" + this.parent.contentModule.getPanel().id + \"'\" + ']'))\n || (iframe && !hasClass(e.selection.range.startContainer.parentNode.ownerDocument.querySelector('body'), 'e-lib')))) {\n this.contentModule.getEditPanel().focus();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = e.selection;\n selectParent = e.selectParent;\n }\n var uploadParentEle = this.parent.createElement('div', { className: 'e-img-uploadwrap e-droparea' + ' ' + this.parent.cssClass });\n var deviceImgUpMsg = this.i10n.getConstant('imageDeviceUploadMessage');\n var imgUpMsg = this.i10n.getConstant('imageUploadMessage');\n var span = this.parent.createElement('span', { className: 'e-droptext' + ' ' + this.parent.cssClass });\n var spanMsg = this.parent.createElement('span', {\n className: 'e-rte-upload-text' + ' ' + this.parent.cssClass, innerHTML: ((Browser.isDevice) ? deviceImgUpMsg : imgUpMsg)\n });\n span.appendChild(spanMsg);\n var btnEle = this.parent.createElement('button', {\n className: 'e-browsebtn' + ' ' + this.parent.cssClass, id: this.rteID + '_insertImage', attrs: { autofocus: 'true', type: 'button' }\n });\n span.appendChild(btnEle);\n uploadParentEle.appendChild(span);\n var browserMsg = this.i10n.getConstant('browse');\n this.browseButton = new Button({ content: browserMsg, enableRtl: this.parent.enableRtl });\n this.browseButton.isStringTemplate = true;\n this.browseButton.createElement = this.parent.createElement;\n this.browseButton.appendTo(btnEle);\n var btnClick = (Browser.isDevice) ? span : btnEle;\n EventHandler.add(btnClick, 'click', this.fileSelect, this);\n var uploadEle = this.parent.createElement('input', {\n id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }, className: this.parent.cssClass\n });\n uploadParentEle.appendChild(uploadEle);\n var altText;\n var rawFile;\n var selectArgs;\n var filesData;\n var beforeUploadArgs;\n this.uploadObj = new Uploader({\n asyncSettings: { saveUrl: this.parent.insertImageSettings.saveUrl, removeUrl: this.parent.insertImageSettings.removeUrl },\n dropArea: span, multiple: false, enableRtl: this.parent.enableRtl, cssClass: this.parent.cssClass,\n allowedExtensions: this.parent.insertImageSettings.allowedTypes.toString(),\n selected: function (e) {\n proxy.isImgUploaded = true;\n selectArgs = e;\n filesData = e.filesData;\n if (_this.parent.isServerRendered) {\n selectArgs = JSON.parse(JSON.stringify(e));\n e.cancel = true;\n rawFile = e.filesData;\n selectArgs.filesData = rawFile;\n }\n _this.parent.trigger(events.imageSelected, selectArgs, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.checkExtension(selectArgs.filesData[0]);\n altText = selectArgs.filesData[0].name;\n if (_this.parent.editorMode === 'HTML' && isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var reader_1 = new FileReader();\n // eslint-disable-next-line\n reader_1.addEventListener('load', function (e) {\n var url = _this.parent.insertImageSettings.saveFormat === 'Base64' ? reader_1.result :\n URL.createObjectURL(convertToBlob(reader_1.result));\n proxy.uploadUrl = {\n url: url, selection: save, altText: altText,\n selectParent: selectParent,\n width: {\n width: proxy.parent.insertImageSettings.width, minWidth: proxy.parent.insertImageSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n }, height: {\n height: proxy.parent.insertImageSettings.height,\n minHeight: proxy.parent.insertImageSettings.minHeight,\n maxHeight: proxy.parent.insertImageSettings.maxHeight\n }\n };\n proxy.inputUrl.setAttribute('disabled', 'true');\n if (isNullOrUndefined(proxy.parent.insertImageSettings.saveUrl) && _this.isAllowedTypes\n && !isNullOrUndefined(_this.dialogObj)) {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n });\n reader_1.readAsDataURL(selectArgs.filesData[0].rawFile);\n }\n if (_this.parent.isServerRendered) {\n /* eslint-disable */\n _this.uploadObj._internalRenderSelect(selectArgs, rawFile);\n /* eslint-enable */\n }\n }\n });\n },\n beforeUpload: function (args) {\n if (_this.parent.isServerRendered) {\n beforeUploadArgs = JSON.parse(JSON.stringify(args));\n beforeUploadArgs.filesData = filesData;\n args.cancel = true;\n _this.parent.trigger(events.imageUploading, beforeUploadArgs, function (beforeUploadArgs) {\n if (beforeUploadArgs.cancel) {\n return;\n }\n /* eslint-disable */\n _this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?\n beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;\n _this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?\n beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;\n _this.uploadObj.uploadFiles(rawFile, null);\n /* eslint-enable */\n });\n }\n else {\n _this.parent.trigger(events.beforeImageUpload, args);\n }\n },\n uploading: function (e) {\n if (!_this.parent.isServerRendered) {\n _this.parent.trigger(events.imageUploading, e);\n }\n },\n success: function (e) {\n _this.parent.trigger(events.imageUploadSuccess, e, function (e) {\n if (!isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var url = _this.parent.insertImageSettings.path + e.file.name;\n // eslint-disable-next-line\n var value = { url: url, selection: save };\n proxy.uploadUrl = {\n url: url, selection: save, altText: altText, selectParent: selectParent,\n width: {\n width: proxy.parent.insertImageSettings.width, minWidth: proxy.parent.insertImageSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n }, height: {\n height: proxy.parent.insertImageSettings.height, minHeight: proxy.parent.insertImageSettings.minHeight,\n maxHeight: proxy.parent.insertImageSettings.maxHeight\n }\n };\n proxy.inputUrl.setAttribute('disabled', 'true');\n }\n if (e.operation === 'upload' && !isNullOrUndefined(_this.dialogObj)) {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n });\n },\n failure: function (e) {\n _this.parent.trigger(events.imageUploadFailed, e);\n },\n removing: function () {\n // eslint-disable-next-line\n _this.parent.trigger(events.imageRemoving, e, function (e) {\n proxy.isImgUploaded = false;\n _this.dialogObj.getButtons(0).element.disabled = true;\n proxy.inputUrl.removeAttribute('disabled');\n if (proxy.uploadUrl) {\n proxy.uploadUrl.url = '';\n }\n });\n }\n });\n this.uploadObj.isStringTemplate = true;\n this.uploadObj.createElement = this.parent.createElement;\n this.uploadObj.appendTo(uploadEle);\n return uploadParentEle;\n };\n Image.prototype.checkExtension = function (e) {\n if (this.uploadObj.allowedExtensions) {\n if (this.uploadObj.allowedExtensions.toLocaleLowerCase().indexOf(('.' + e.type).toLocaleLowerCase()) === -1) {\n this.dialogObj.getButtons(0).element.setAttribute('disabled', 'disabled');\n this.isAllowedTypes = false;\n }\n else {\n this.isAllowedTypes = true;\n }\n }\n };\n Image.prototype.fileSelect = function () {\n this.dialogObj.element.getElementsByClassName('e-file-select-wrap')[0].querySelector('button').click();\n return false;\n };\n Image.prototype.dragStart = function (e) {\n if (e.target.nodeName === 'IMG') {\n this.parent.trigger(events.actionBegin, e, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n e.preventDefault();\n }\n else {\n e.dataTransfer.effectAllowed = 'copyMove';\n e.target.classList.add(classes.CLS_RTE_DRAG_IMAGE);\n }\n });\n }\n else {\n return true;\n }\n };\n Image.prototype.dragEnter = function (e) {\n e.dataTransfer.dropEffect = 'copy';\n e.preventDefault();\n };\n Image.prototype.dragOver = function (e) {\n if ((Browser.info.name === 'edge' && e.dataTransfer.items[0].type.split('/')[0].indexOf('image') > -1) ||\n (Browser.isIE && e.dataTransfer.types[0] === 'Files')) {\n e.preventDefault();\n }\n else {\n return true;\n }\n };\n /**\n * Used to set range When drop an image\n *\n * @param {ImageDropEventArgs} args - specifies the image arguments.\n * @returns {void}\n */\n Image.prototype.dragDrop = function (args) {\n var _this = this;\n this.parent.trigger(events.beforeImageDrop, args, function (e) {\n var imgElement = _this.parent.inputElement.ownerDocument.querySelector('.' + classes.CLS_RTE_DRAG_IMAGE);\n var isImgOrFileDrop = (imgElement && imgElement.tagName === 'IMG') || e.dataTransfer.files.length > 0;\n if (!e.cancel && isImgOrFileDrop) {\n _this.parent.trigger(events.actionBegin, e, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n e.preventDefault();\n }\n else {\n if (closest(e.target, '#' + _this.parent.getID() + '_toolbar') ||\n _this.parent.inputElement.contentEditable === 'false') {\n e.preventDefault();\n return;\n }\n if (_this.parent.element.querySelector('.' + classes.CLS_IMG_RESIZE)) {\n detach(_this.imgResizeDiv);\n }\n e.preventDefault();\n var range = void 0;\n if (_this.contentModule.getDocument().caretRangeFromPoint) { //For chrome\n range = _this.contentModule.getDocument().caretRangeFromPoint(e.clientX, e.clientY);\n }\n else if ((e.rangeParent)) { //For mozilla firefox\n range = _this.contentModule.getDocument().createRange();\n range.setStart(e.rangeParent, e.rangeOffset);\n }\n else {\n range = _this.getDropRange(e.clientX, e.clientY); //For internet explorer\n }\n _this.parent.notify(events.selectRange, { range: range });\n var uploadArea = _this.parent.element.querySelector('.' + classes.CLS_DROPAREA);\n if (uploadArea) {\n return;\n }\n _this.insertDragImage(e);\n }\n });\n }\n else {\n if (isImgOrFileDrop) {\n e.preventDefault();\n }\n }\n });\n };\n /**\n * Used to calculate range on internet explorer\n *\n * @param {number} x - specifies the x range.\n * @param {number} y - specifies the y range.\n * @returns {void}\n */\n Image.prototype.getDropRange = function (x, y) {\n var startRange = this.contentModule.getDocument().createRange();\n this.parent.formatter.editorManager.nodeSelection.setRange(this.contentModule.getDocument(), startRange);\n var elem = this.contentModule.getDocument().elementFromPoint(x, y);\n var startNode = (elem.childNodes.length > 0 ? elem.childNodes[0] : elem);\n var startCharIndexCharacter = 0;\n if (this.parent.inputElement.firstChild.innerHTML === '
') {\n startRange.setStart(startNode, startCharIndexCharacter);\n startRange.setEnd(startNode, startCharIndexCharacter);\n }\n else {\n var rangeRect = void 0;\n do {\n startCharIndexCharacter++;\n startRange.setStart(startNode, startCharIndexCharacter);\n startRange.setEnd(startNode, startCharIndexCharacter + 1);\n rangeRect = startRange.getBoundingClientRect();\n } while (rangeRect.left < x && startCharIndexCharacter < startNode.length - 1);\n }\n return startRange;\n };\n Image.prototype.insertDragImage = function (e) {\n var _this = this;\n e.preventDefault();\n var activePopupElement = this.parent.element.querySelector('' + classes.CLS_POPUP_OPEN);\n this.parent.notify(events.drop, { args: e });\n if (activePopupElement) {\n activePopupElement.classList.add(classes.CLS_HIDE);\n }\n var imgElement = this.parent.inputElement.ownerDocument.querySelector('.' + classes.CLS_RTE_DRAG_IMAGE);\n if (e.dataTransfer.files.length > 0 && imgElement === null) { //For external image drag and drop\n if (e.dataTransfer.files.length > 1) {\n return;\n }\n var imgFiles = e.dataTransfer.files;\n var fileName = imgFiles[0].name;\n var imgType = fileName.substring(fileName.lastIndexOf('.'));\n var allowedTypes = this.parent.insertImageSettings.allowedTypes;\n for (var i = 0; i < allowedTypes.length; i++) {\n if (imgType.toLocaleLowerCase() === allowedTypes[i].toLowerCase()) {\n if (this.parent.insertImageSettings.saveUrl) {\n this.onSelect(e);\n }\n else {\n var args = { args: e, text: '', file: imgFiles[0] };\n e.preventDefault();\n this.imagePaste(args);\n }\n }\n }\n }\n else { //For internal image drag and drop\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n if (imgElement && imgElement.tagName === 'IMG') {\n if (imgElement.nextElementSibling) {\n if (imgElement.nextElementSibling.classList.contains(classes.CLS_IMG_INNER)) {\n range.insertNode(imgElement.parentElement.parentElement);\n }\n else {\n range.insertNode(imgElement);\n }\n }\n else {\n range.insertNode(imgElement);\n }\n imgElement.classList.remove(classes.CLS_RTE_DRAG_IMAGE);\n var imgArgs_1 = { elements: [imgElement] };\n imgElement.addEventListener('load', function () {\n _this.parent.trigger(events.actionComplete, imgArgs_1);\n });\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n var args = e;\n this.resizeStart(args, imgElement);\n this.hideImageQuickToolbar();\n }\n }\n };\n Image.prototype.onSelect = function (args) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var parentElement = this.parent.createElement('ul', { className: classes.CLS_UPLOAD_FILES });\n this.parent.element.appendChild(parentElement);\n var validFiles = {\n name: '',\n size: 0,\n status: '',\n statusCode: '',\n type: '',\n rawFile: args.dataTransfer.files[0],\n validationMessages: {}\n };\n var imageTag = this.parent.createElement('IMG');\n imageTag.style.opacity = '0.5';\n imageTag.classList.add(classes.CLS_RTE_IMAGE);\n imageTag.classList.add(classes.CLS_IMGINLINE);\n imageTag.classList.add(classes.CLS_RESIZE);\n var file = validFiles.rawFile;\n var reader = new FileReader();\n reader.addEventListener('load', function () {\n var url = URL.createObjectURL(convertToBlob(reader.result));\n imageTag.src = proxy.parent.insertImageSettings.saveFormat === 'Blob' ? url : reader.result;\n });\n if (file) {\n reader.readAsDataURL(file);\n }\n range.insertNode(imageTag);\n this.uploadMethod(args, imageTag);\n var e = { elements: [imageTag] };\n imageTag.addEventListener('load', function () {\n _this.parent.trigger(events.actionComplete, e);\n });\n detach(parentElement);\n };\n /**\n * Rendering uploader and popup for drag and drop\n *\n * @param {DragEvent} dragEvent - specifies the event.\n * @param {HTMLImageElement} imageElement - specifies the element.\n * @returns {void}\n */\n Image.prototype.uploadMethod = function (dragEvent, imageElement) {\n var _this = this;\n var isUploading = false;\n // eslint-disable-next-line\n var proxy = this;\n var popupEle = this.parent.createElement('div');\n this.parent.element.appendChild(popupEle);\n var uploadEle = this.parent.createElement('input', {\n id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }\n });\n var offsetY = this.parent.iframeSettings.enable ? -50 : -90;\n this.popupObj = new Popup(popupEle, {\n relateTo: imageElement,\n height: '85px',\n width: '300px',\n offsetY: offsetY,\n content: uploadEle,\n viewPortElement: this.parent.element,\n position: { X: 'center', Y: 'top' },\n enableRtl: this.parent.enableRtl,\n zIndex: 10001,\n // eslint-disable-next-line\n close: function (event) {\n _this.parent.isBlur = false;\n _this.popupObj.destroy();\n detach(_this.popupObj.element);\n _this.popupObj = null;\n if (!_this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.baseToolbar.toolbarObj.disable(false);\n }\n }\n });\n this.popupObj.element.style.display = 'none';\n addClass([this.popupObj.element], classes.CLS_POPUP_OPEN);\n addClass([this.popupObj.element], classes.CLS_RTE_UPLOAD_POPUP);\n if (!isNOU(this.parent.cssClass)) {\n addClass([this.popupObj.element], this.parent.cssClass);\n }\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var timeOut = dragEvent.dataTransfer.files[0].size > 1000000 ? 300 : 100;\n setTimeout(function () {\n proxy.refreshPopup(imageElement);\n }, timeOut);\n var rawFile;\n var beforeUploadArgs;\n this.uploadObj = new Uploader({\n asyncSettings: {\n saveUrl: this.parent.insertImageSettings.saveUrl,\n removeUrl: this.parent.insertImageSettings.removeUrl\n },\n cssClass: classes.CLS_RTE_DIALOG_UPLOAD + ' ' + this.parent.cssClass,\n dropArea: this.parent.element,\n allowedExtensions: this.parent.insertImageSettings.allowedTypes.toString(),\n removing: function () {\n _this.parent.inputElement.contentEditable = 'true';\n isUploading = false;\n detach(imageElement);\n _this.popupObj.close();\n },\n canceling: function () {\n _this.parent.inputElement.contentEditable = 'true';\n isUploading = false;\n detach(imageElement);\n _this.popupObj.close();\n _this.quickToolObj.imageQTBar.hidePopup();\n setTimeout(function () {\n _this.uploadObj.destroy();\n }, 900);\n },\n beforeUpload: function (args) {\n if (_this.parent.isServerRendered) {\n beforeUploadArgs = JSON.parse(JSON.stringify(args));\n beforeUploadArgs.filesData = rawFile;\n isUploading = true;\n args.cancel = true;\n _this.parent.trigger(events.imageUploading, beforeUploadArgs, function (beforeUploadArgs) {\n if (beforeUploadArgs.cancel) {\n return;\n }\n if (!_this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.baseToolbar.toolbarObj.disable(true);\n }\n /* eslint-disable */\n _this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?\n beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;\n _this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?\n beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;\n _this.uploadObj.uploadFiles(rawFile, null);\n _this.parent.inputElement.contentEditable = 'false';\n /* eslint-enable */\n });\n }\n else {\n _this.parent.trigger(events.beforeImageUpload, args);\n if (!_this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.baseToolbar.toolbarObj.disable(true);\n }\n }\n },\n uploading: function (e) {\n if (!_this.parent.isServerRendered) {\n isUploading = true;\n _this.parent.trigger(events.imageUploading, e, function (imageUploadingArgs) {\n if (imageUploadingArgs.cancel) {\n if (!isNullOrUndefined(imageElement)) {\n detach(imageElement);\n }\n if (!isNullOrUndefined(_this.popupObj.element)) {\n detach(_this.popupObj.element);\n }\n }\n else {\n _this.parent.inputElement.contentEditable = 'false';\n }\n });\n }\n },\n selected: function (e) {\n if (isUploading) {\n e.cancel = true;\n }\n if (_this.parent.isServerRendered) {\n rawFile = e.filesData;\n }\n },\n failure: function (e) {\n isUploading = false;\n _this.parent.inputElement.contentEditable = 'true';\n var args = {\n args: dragEvent,\n type: 'Images',\n isNotify: undefined,\n elements: imageElement\n };\n setTimeout(function () {\n _this.uploadFailure(imageElement, args, e);\n }, 900);\n },\n success: function (e) {\n if (e.operation === 'cancel') {\n return;\n }\n isUploading = false;\n _this.parent.inputElement.contentEditable = 'true';\n var args = {\n args: dragEvent,\n type: 'Images',\n isNotify: undefined,\n elements: imageElement\n };\n setTimeout(function () {\n _this.uploadSuccess(imageElement, dragEvent, args, e);\n }, 900);\n }\n });\n this.uploadObj.appendTo(this.popupObj.element.childNodes[0]);\n this.popupObj.element.querySelector('.e-rte-dialog-upload .e-file-select-wrap').style.display = 'none';\n range.selectNodeContents(imageElement);\n this.parent.formatter.editorManager.nodeSelection.setRange(this.contentModule.getDocument(), range);\n };\n Image.prototype.refreshPopup = function (imageElement) {\n var imgPosition = this.parent.iframeSettings.enable ? this.parent.element.offsetTop +\n imageElement.offsetTop : imageElement.offsetTop;\n var rtePosition = this.parent.element.offsetTop + this.parent.element.offsetHeight;\n if (imgPosition > rtePosition) {\n this.popupObj.relateTo = this.parent.inputElement;\n this.popupObj.offsetY = this.parent.iframeSettings.enable ? -30 : -65;\n this.popupObj.element.style.display = 'block';\n }\n else {\n if (this.popupObj) {\n this.popupObj.refreshPosition(imageElement);\n this.popupObj.element.style.display = 'block';\n }\n }\n };\n /**\n * Called when drop image upload was failed\n *\n * @param {HTMLElement} imgEle - specifies the image element.\n * @param {IShowPopupArgs} args - specifies the arguments.\n * @param {Object} e - specfies the object.\n * @returns {void}\n */\n Image.prototype.uploadFailure = function (imgEle, args, e) {\n detach(imgEle);\n if (this.popupObj) {\n this.popupObj.close();\n }\n this.parent.trigger(events.imageUploadFailed, e);\n this.uploadObj.destroy();\n };\n /**\n * Called when drop image upload was successful\n *\n * @param {HTMLElement} imageElement - specifies the image element.\n * @param {DragEvent} dragEvent - specifies the drag event.\n * @param {IShowPopupArgs} args - specifies the arguments.\n * @param {ImageSuccessEventArgs} e - specifies the success event.\n * @returns {void}\n */\n Image.prototype.uploadSuccess = function (imageElement, dragEvent, args, e) {\n var _this = this;\n imageElement.style.opacity = '1';\n imageElement.classList.add(classes.CLS_IMG_FOCUS);\n e.element = imageElement;\n this.parent.trigger(events.imageUploadSuccess, e, function (e) {\n if (!isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var url = _this.parent.insertImageSettings.path + e.file.name;\n imageElement.src = url;\n imageElement.setAttribute('alt', e.file.name);\n }\n });\n if (this.popupObj) {\n this.popupObj.close();\n this.uploadObj.destroy();\n }\n this.showImageQuickToolbar(args);\n this.resizeStart(dragEvent, imageElement);\n };\n Image.prototype.imagePaste = function (args) {\n var _this = this;\n if (args.text.length === 0 && !isNullOrUndefined(args.file)) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var reader_2 = new FileReader();\n args.args.preventDefault();\n // eslint-disable-next-line\n reader_2.addEventListener('load', function (e) {\n var url = {\n cssClass: (proxy_1.parent.insertImageSettings.display === 'inline' ? classes.CLS_IMGINLINE : classes.CLS_IMGBREAK),\n url: _this.parent.insertImageSettings.saveFormat === 'Base64' || !isNullOrUndefined(args.callBack) ?\n reader_2.result : URL.createObjectURL(convertToBlob(reader_2.result)),\n width: {\n width: proxy_1.parent.insertImageSettings.width, minWidth: proxy_1.parent.insertImageSettings.minWidth,\n maxWidth: proxy_1.parent.getInsertImgMaxWidth()\n },\n height: {\n height: proxy_1.parent.insertImageSettings.height, minHeight: proxy_1.parent.insertImageSettings.minHeight,\n maxHeight: proxy_1.parent.insertImageSettings.maxHeight\n }\n };\n if (!isNullOrUndefined(args.callBack)) {\n args.callBack(url);\n return;\n }\n else {\n proxy_1.parent.formatter.process(proxy_1.parent, { item: { command: 'Images', subCommand: 'Image' } }, args.args, url);\n _this.showPopupToolBar(args, url);\n }\n });\n reader_2.readAsDataURL(args.file);\n }\n };\n Image.prototype.showPopupToolBar = function (e, url) {\n var _this = this;\n var imageSrc = 'img[src=\"' + url.url + '\"]';\n var imageElement = this.parent.inputElement.querySelector(imageSrc);\n this.parent.quickToolbarModule.createQTBar('Image', 'MultiRow', this.parent.quickToolbarSettings.image, RenderType.ImageToolbar);\n var args = {\n args: e.args,\n type: 'Images',\n isNotify: undefined,\n elements: imageElement\n };\n if (imageElement) {\n setTimeout(function () {\n _this.showImageQuickToolbar(args);\n _this.resizeStart(e.args, imageElement);\n }, 0);\n }\n };\n /* eslint-disable */\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n Image.prototype.destroy = function () {\n this.prevSelectedImgEle = undefined;\n this.removeEventListener();\n };\n Image.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n Image.prototype.getModuleName = function () {\n return 'image';\n };\n return Image;\n}());\nexport { Image };\n","import { EventHandler, detach, isNullOrUndefined, select, extend, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { closest, addClass, removeClass, Browser } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { CLS_RTE_ELEMENTS } from '../base/classes';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { RenderType } from '../base/enum';\nimport { dispatchEvent, parseHtml } from '../base/util';\nimport { isIDevice } from '../../common/util';\n/**\n * `Link` module is used to handle undo actions.\n */\nvar Link = /** @class */ (function () {\n function Link(parent, serviceLocator) {\n this.parent = parent;\n this.rteID = parent.element.id;\n this.i10n = serviceLocator.getService('rteLocale');\n this.addEventListener();\n this.serviceLocator = serviceLocator;\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n }\n Link.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.insertLink, this.linkDialog, this);\n this.parent.on(events.showLinkDialog, this.showDialog, this);\n this.parent.on(events.closeLinkDialog, this.closeDialog, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.insertCompleted, this.showLinkQuickToolbar, this);\n this.parent.on(events.clearDialogObj, this.clearDialogObj, this);\n this.parent.on(events.linkToolbarAction, this.onToolbarAction, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.unLink, this.removeLink, this);\n this.parent.on(events.editLink, this.editLink, this);\n this.parent.on(events.openLink, this.openLink, this);\n this.parent.on(events.editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n Link.prototype.onToolbarAction = function (args) {\n var item = args.args.item;\n switch (item.subCommand) {\n case 'OpenLink':\n this.parent.notify(events.openLink, args);\n break;\n case 'EditLink':\n this.parent.notify(events.editLink, args);\n break;\n case 'RemoveLink':\n this.parent.notify(events.unLink, args);\n break;\n }\n };\n Link.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.insertLink, this.linkDialog);\n this.parent.off(events.showLinkDialog, this.showDialog);\n this.parent.off(events.closeLinkDialog, this.closeDialog);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.insertCompleted, this.showLinkQuickToolbar);\n this.parent.off(events.clearDialogObj, this.clearDialogObj);\n this.parent.off(events.linkToolbarAction, this.onToolbarAction);\n this.parent.off(events.unLink, this.removeLink);\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.editLink, this.editLink);\n this.parent.off(events.openLink, this.openLink);\n this.parent.off(events.editAreaClick, this.editAreaClickHandler);\n this.parent.off(events.bindCssClass, this.setCssClass);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n Link.prototype.onIframeMouseDown = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Link.prototype.updateCss = function (currentObj, e) {\n if (currentObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n currentObj.setProperties({ cssClass: (currentObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n currentObj.setProperties({ cssClass: (currentObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Link.prototype.setCssClass = function (e) {\n this.updateCss(this.checkBoxObj, e);\n this.updateCss(this.dialogObj, e);\n };\n Link.prototype.showLinkQuickToolbar = function (e) {\n if (!isNullOrUndefined(e.args) && e.args.action !== 'enter' &&\n e.args.action !== 'space') {\n var pageX = void 0;\n var pageY = void 0;\n if (e.type !== 'Links' || isNullOrUndefined(this.parent.quickToolbarModule) ||\n isNullOrUndefined(this.parent.quickToolbarModule.linkQTBar)) {\n return;\n }\n this.quickToolObj = this.parent.quickToolbarModule;\n var parentTop = this.parent.element.getBoundingClientRect().top;\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var target_1;\n [].forEach.call(e.elements, function (element, index) {\n if (index === 0) {\n target_1 = ((element.nodeName === '#text') ? (element.parentNode) : element);\n }\n });\n if (e.isNotify) {\n var tbElement = this.parent.toolbarModule.getToolbarElement();\n var linkTop = target_1.getBoundingClientRect().top;\n var linkLeft = target_1.getBoundingClientRect().left;\n var linkPos = linkTop - parentTop;\n var tbHeight = (tbElement) ? (tbElement.offsetHeight + this.parent.toolbarModule.getExpandTBarPopHeight()) : 0;\n pageX = (this.parent.iframeSettings.enable) ? parentLeft + linkLeft : target_1.getBoundingClientRect().left;\n pageY = window.pageYOffset + ((this.parent.iframeSettings.enable) ?\n (parentTop + tbHeight + linkTop) : (parentTop + linkPos));\n }\n else {\n var args = void 0;\n args = e.args.touches ? e.args.changedTouches[0] : args = e.args;\n pageX = (this.parent.iframeSettings.enable) ? window.pageXOffset + parentLeft + args.clientX : args.pageX;\n pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset + parentTop + args.clientY : args.pageY;\n }\n if (this.quickToolObj.linkQTBar) {\n this.quickToolObj.linkQTBar.showPopup(pageX, pageY, range.endContainer);\n }\n }\n };\n Link.prototype.hideLinkQuickToolbar = function () {\n if (this.quickToolObj && this.quickToolObj.linkQTBar && document.body.contains(this.quickToolObj.linkQTBar.element)) {\n this.quickToolObj.linkQTBar.hidePopup();\n }\n };\n Link.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly) {\n this.hideLinkQuickToolbar();\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.linkQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n target = this.getAnchorNode(target);\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.linkQTBar.element.classList.contains('e-rte-pop');\n if (target.nodeName === 'A' && (target.childNodes.length > 0 && target.childNodes[0].nodeName !== 'IMG') &&\n e.args.target.nodeName !== 'IMG' &&\n !isNOU(closest(this.parent.getRange().startContainer.parentElement, 'A')) && !isNOU(closest(this.parent.getRange().endContainer.parentElement, 'A'))) {\n if (isPopupOpen) {\n return;\n }\n this.showLinkQuickToolbar({\n args: args,\n isNotify: false,\n type: 'Links',\n elements: [args.target]\n });\n }\n else {\n this.hideLinkQuickToolbar();\n }\n }\n };\n Link.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n switch (originalEvent.action) {\n case 'escape':\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.close();\n }\n break;\n case 'insert-link':\n this.openDialog(true, event);\n originalEvent.preventDefault();\n break;\n }\n };\n Link.prototype.openDialog = function (isInternal, event) {\n if (!isInternal) {\n this.parent.contentModule.getEditPanel().focus();\n }\n if (this.parent.editorMode === 'HTML') {\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n var selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n var selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n var eventArgs = {\n args: event ? event.args : {\n item: { command: 'Links', subCommand: 'CreateLink' },\n originalEvent: undefined,\n name: !isInternal ? 'showDialog' : null\n },\n selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n };\n this.linkDialog(eventArgs);\n }\n else {\n var textArea = this.parent.contentModule.getEditPanel();\n this.parent.formatter.editorManager.markdownSelection.save(textArea.selectionStart, textArea.selectionEnd);\n this.linkDialog({\n args: {\n item: { command: 'Links', subCommand: 'Link' },\n originalEvent: event && event.args\n },\n member: 'link',\n text: this.parent.formatter.editorManager.markdownSelection.getSelectedText(this.parent.contentModule.getEditPanel()),\n module: 'Markdown',\n name: 'insertLink'\n });\n }\n };\n Link.prototype.showDialog = function () {\n this.openDialog(false);\n this.setCssClass({ cssClass: this.parent.cssClass });\n };\n Link.prototype.closeDialog = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Link.prototype.clearDialogObj = function () {\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n Link.prototype.linkDialog = function (e, inputDetails) {\n var _this = this;\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n return;\n }\n if (this.parent.editorMode === 'HTML' && (e.selectParent.length > 0 &&\n !isNullOrUndefined(e.selectParent[0].classList) &&\n e.selectParent[0].classList.contains('e-rte-anchor')) && isNullOrUndefined(inputDetails)) {\n this.editLink(e);\n return;\n }\n var linkWebAddress = this.i10n.getConstant('linkWebUrl');\n var linkDisplayText = this.i10n.getConstant('linkText');\n var linkTooltip = this.i10n.getConstant('linkTooltipLabel');\n var urlPlace = this.i10n.getConstant('linkurl');\n var textPlace = this.i10n.getConstant('textPlaceholder');\n var title = this.i10n.getConstant('linkTitle');\n var linkDialogEle = this.parent.createElement('div', {\n className: 'e-rte-link-dialog' + ' ' + this.parent.cssClass, id: this.rteID + '_rtelink'\n });\n this.parent.element.appendChild(linkDialogEle);\n var linkContent = this.parent.createElement('div', {\n className: 'e-rte-linkcontent' + ' ' + this.parent.cssClass, id: this.rteID + '_linkContent'\n });\n var htmlTextbox = (this.parent.editorMode === 'HTML') ? '
' +\n '
' +\n '
' + '
' +\n '
' : '';\n var content = '
' + '
' +\n '
' +\n '
' + '
' +\n '' +\n '
' + htmlTextbox;\n var contentElem = parseHtml(content);\n linkContent.appendChild(contentElem);\n var linkTarget = linkContent.querySelector('.e-rte-linkTarget');\n var linkUrl = linkContent.querySelector('.e-rte-linkurl');\n var linkText = linkContent.querySelector('.e-rte-linkText');\n var linkTitle = linkContent.querySelector('.e-rte-linkTitle');\n var linkOpenLabel = this.i10n.getConstant('linkOpenInNewWindow');\n this.checkBoxObj = new CheckBox({ label: linkOpenLabel, checked: true, enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass });\n this.checkBoxObj.isStringTemplate = true;\n this.checkBoxObj.createElement = this.parent.createElement;\n this.checkBoxObj.appendTo(linkTarget);\n var selectText = (this.parent.editorMode === 'HTML') ?\n e.selection.getRange(this.parent.contentModule.getDocument()).toString() : e.text;\n var linkInsert = this.i10n.getConstant('dialogInsert');\n var linkCancel = this.i10n.getConstant('dialogCancel');\n var selection = e.selection;\n var selectObj = { selfLink: this, selection: e.selection, selectParent: e.selectParent, args: e.args };\n var dialogModel = {\n header: this.i10n.getConstant('linkHeader'),\n content: linkContent,\n cssClass: CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '310px',\n isModal: Browser.isDevice,\n buttons: [{\n click: this.insertlink.bind(selectObj),\n buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink' + ' ' + this.parent.cssClass, isPrimary: true }\n },\n { click: this.cancelDialog.bind(selectObj), buttonModel: { cssClass: 'e-flat' + ' ' + this.parent.cssClass, content: linkCancel } }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n _this.parent.isBlur = false;\n if (event && event.event.returnValue) {\n if (_this.parent.editorMode === 'HTML') {\n selection.restore();\n }\n else {\n _this.parent.formatter.editorManager.markdownSelection.restore(_this.parent.contentModule.getEditPanel());\n }\n }\n _this.dialogObj.destroy();\n detach(_this.dialogObj.element);\n var args = _this.dialogObj;\n _this.dialogRenderObj.close(args);\n _this.dialogObj = null;\n }\n };\n // eslint-disable-next-line\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(linkDialogEle);\n linkDialogEle.style.maxHeight = 'inherit';\n if (isNullOrUndefined(this.dialogObj)) {\n return;\n }\n if (!isNullOrUndefined(inputDetails)) {\n linkUrl.value = inputDetails.url;\n linkText.value = inputDetails.text;\n linkTitle.value = inputDetails.title;\n // eslint-disable-next-line\n (inputDetails.target) ? this.checkBoxObj.checked = true : this.checkBoxObj.checked = false;\n this.dialogObj.header = inputDetails.header;\n this.dialogObj.element.querySelector('.e-insertLink').textContent = inputDetails.btnText;\n }\n this.checkUrl(false);\n if ((this.parent.editorMode === 'HTML' && isNullOrUndefined(inputDetails) && ((!isNullOrUndefined(selectText)\n && selectText !== '') && (e.selection.range.startOffset === 0) || e.selection.range.startOffset !==\n e.selection.range.endOffset)) || e.module === 'Markdown') {\n linkText.value = selectText;\n }\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n if (this.quickToolObj) {\n this.hideLinkQuickToolbar();\n if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n }\n };\n // eslint-disable-next-line\n Link.prototype.insertlink = function (e) {\n var linkEle = this.selfLink.dialogObj.element;\n var linkUrl = linkEle.querySelector('.e-rte-linkurl').value;\n var linkText = linkEle.querySelector('.e-rte-linkText').value;\n var linkTitle;\n if (this.selfLink.parent.editorMode === 'HTML') {\n linkTitle = linkEle.querySelector('.e-rte-linkTitle').value;\n }\n var target = (this.selfLink.checkBoxObj.checked) ? '_blank' : null;\n if (linkUrl === '') {\n this.selfLink.checkUrl(true);\n return;\n }\n if (!this.selfLink.isUrl(linkUrl)) {\n linkText = (linkText === '') ? linkUrl : linkText;\n if (!this.selfLink.parent.enableAutoUrl) {\n linkUrl = linkUrl.indexOf('http') > -1 ? linkUrl : 'http://' + linkUrl;\n }\n else {\n // eslint-disable-next-line\n linkUrl = linkUrl;\n }\n }\n else {\n this.selfLink.checkUrl(false);\n }\n var proxy = this.selfLink;\n if (proxy.parent.editorMode === 'HTML' && isNullOrUndefined(closest(this.selection.range.startContainer.parentNode, '[id='\n // eslint-disable-next-line\n + \"'\" + proxy.parent.contentModule.getPanel().id + \"'\" + ']'))) {\n proxy.parent.contentModule.getEditPanel().focus();\n if (Browser.isIE && proxy.parent.iframeSettings.enable) {\n this.selection.restore();\n }\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.parent.contentModule.getDocument());\n this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var value = {\n url: linkUrl, text: linkText, title: linkTitle, target: target,\n selection: this.selection, selectParent: this.selectParent\n };\n if (document.body.contains(proxy.dialogObj.element)) {\n this.selfLink.dialogObj.hide({ returnValue: false });\n }\n if (isIDevice() && proxy.parent.iframeSettings.enable) {\n select('iframe', proxy.parent.element).contentWindow.focus();\n }\n if (proxy.parent.editorMode === 'HTML') {\n this.selection.restore();\n }\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n var argsValue;\n if (!isNullOrUndefined(this.args) &&\n this.args.code === 'KeyK') {\n var originalEvent = this.args;\n extend(this.args, { item: { command: 'Links', subCommand: 'CreateLink' }, originalEvent: originalEvent }, true);\n var argsVal = {\n item: { command: 'Links', subCommand: 'CreateLink' }, originalEvent: originalEvent\n };\n argsValue = argsVal;\n }\n else {\n argsValue = this.args;\n }\n this.selfLink.parent.formatter.process(this.selfLink.parent, argsValue, (!isNullOrUndefined(this.args) &&\n this.args.originalEvent), value);\n this.selfLink.parent.contentModule.getEditPanel().focus();\n };\n Link.prototype.isUrl = function (url) {\n // eslint-disable-next-line\n var regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/gi;\n return regexp.test(url);\n };\n Link.prototype.checkUrl = function (e) {\n var linkEle = this.dialogObj.element;\n var linkUrl = linkEle.querySelector('.e-rte-linkurl');\n if (e) {\n addClass([linkUrl], 'e-error');\n linkUrl.setSelectionRange(0, linkUrl.value.length);\n linkUrl.focus();\n }\n else {\n removeClass([linkUrl], 'e-error');\n }\n };\n Link.prototype.removeLink = function (e) {\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n this.parent.formatter.process(this.parent, e.args, e.args, {\n selectNode: e.selectNode, selectParent: e.selectParent, selection: e.selection,\n text: selectParentEle.innerText,\n subCommand: e.args.item.subCommand\n });\n if (isIDevice() && this.parent.iframeSettings.enable) {\n select('iframe', this.parent.element).contentWindow.focus();\n }\n else {\n this.parent.contentModule.getEditPanel().focus();\n }\n this.hideLinkQuickToolbar();\n };\n Link.prototype.openLink = function (e) {\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {\n this.parent.formatter.process(this.parent, e.args, e.args, {\n url: selectParentEle.href, text: selectParentEle.innerText,\n target: selectParentEle.target === '' ? '_self' : '_blank', selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n }\n };\n Link.prototype.getAnchorNode = function (element) {\n var selectParent = closest(element, 'a');\n return (selectParent ? selectParent : element);\n };\n Link.prototype.editLink = function (e) {\n var selectedNode = this.getAnchorNode(e.selectNode[0]);\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n selectParentEle = selectedNode.nodeName === 'A' ? selectedNode : selectParentEle;\n if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var inputDetails = {\n url: selectParentEle.getAttribute('href'), text: selectParentEle.innerText,\n title: selectParentEle.title, target: selectParentEle.target,\n header: this.i10n.getConstant('editLink'), btnText: linkUpdate\n };\n this.linkDialog(e, inputDetails);\n }\n };\n // eslint-disable-next-line\n Link.prototype.cancelDialog = function (e) {\n this.selfLink.parent.isBlur = false;\n this.selfLink.dialogObj.hide({ returnValue: true });\n if (isIDevice()) {\n this.selection.restore();\n }\n else {\n this.selfLink.parent.contentModule.getEditPanel().focus();\n }\n };\n Link.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.dialogObj) && ((\n // eslint-disable-next-line\n !closest(target, '[id=' + \"'\" + this.dialogObj.element.id + \"'\" + ']') && this.parent.toolbarSettings.enable &&\n this.parent.getToolbarElement() && !this.parent.getToolbarElement().contains(e.target)) ||\n (((this.parent.getToolbarElement() && this.parent.getToolbarElement().contains(e.target)) ||\n this.parent.inlineMode.enable && !closest(target, '#' + this.dialogObj.element.id)) &&\n !closest(target, '#' + this.parent.getID() + '_toolbar_CreateLink') &&\n !target.querySelector('#' + this.parent.getID() + '_toolbar_CreateLink')))) {\n this.dialogObj.hide({ returnValue: true });\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n Link.prototype.destroy = function () {\n this.removeEventListener();\n };\n Link.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n Link.prototype.getModuleName = function () {\n return 'link';\n };\n return Link;\n}());\nexport { Link };\n","import { extend, isNullOrUndefined as isNOU, Browser } from '@syncfusion/ej2-base';\nimport * as CONSTANT from '../base/constant';\nimport { updateUndoRedoStatus, isIDevice } from '../base/util';\nimport { KEY_DOWN, KEY_UP } from './../../common/constant';\n/**\n * Formatter\n *\n * @hidden\n\n */\nvar Formatter = /** @class */ (function () {\n function Formatter() {\n }\n /**\n * To execute the command\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {ActionBeginEventArgs} args - specifies the event arguments.\n * @param {MouseEvent|KeyboardEvent} event - specifies the keyboard event.\n * @param {IItemCollectionArgs} value - specifies the collection arguments\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.process = function (self, args, event, value) {\n var _this = this;\n var selection = self.contentModule.getDocument().getSelection();\n var range = (selection.rangeCount > 0) ? selection.getRangeAt(selection.rangeCount - 1) : null;\n var saveSelection;\n var isKeyboardVideoInsert = (!isNOU(value) && !isNOU(value.cssClass) &&\n value.cssClass !== 'e-video-inline');\n if (self.editorMode === 'HTML') {\n if (!isNOU(args) && !isKeyboardVideoInsert) {\n if (isNOU(args.name) || (!isNOU(args.name) && args.name !== 'showDialog')) {\n saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());\n }\n }\n }\n if (!isNOU(args)\n && args.item.command\n && args.item.command !== 'Table'\n && args.item.command !== 'Actions'\n && args.item.command !== 'Links'\n && args.item.command !== 'Images'\n && args.item.command !== 'Files'\n && args.item.command !== 'Audios'\n && args.item.command !== 'Videos'\n && range\n && !(self.contentModule.getEditPanel().contains(this.getAncestorNode(range.commonAncestorContainer))\n || self.contentModule.getEditPanel() === range.commonAncestorContainer\n || self.contentModule.getPanel() === range.commonAncestorContainer)) {\n return;\n }\n if (!isNOU(args) && self.maxLength !== -1 && !isNOU(args.item.command)) {\n var currentInsertContentLength = 0;\n if (args.item.command === 'Links') {\n currentInsertContentLength = value.text.length === 0 ? value.url.length : value.text.length;\n }\n if (args.item.command === 'Images' || args.item.command === 'Videos' || args.item.command === 'Table' || args.item.command === 'Files') {\n currentInsertContentLength = 1;\n }\n var currentLength = self.getText().trim().length;\n var selectionLength = self.getSelection().length;\n var totalLength = (currentLength - selectionLength) + currentInsertContentLength;\n if (!(self.maxLength === -1 || totalLength <= self.maxLength)) {\n return;\n }\n }\n if (isNOU(args)) {\n var action_1 = event.action;\n if (action_1 !== 'tab' && action_1 !== 'enter' && action_1 !== 'space' && action_1 !== 'escape') {\n args = {};\n if (self.editorMode === 'Markdown' && action_1 === 'insert-table') {\n value = {\n 'headingText': self.localeObj.getConstant('TableHeadingText'),\n 'colText': self.localeObj.getConstant('TableColText')\n };\n }\n var items = {\n originalEvent: event, cancel: false,\n requestType: action_1 || (event.key + 'Key'),\n itemCollection: value\n };\n extend(args, args, items, true);\n self.trigger(CONSTANT.actionBegin, args, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n if (action_1 === 'paste' || action_1 === 'cut' || action_1 === 'copy') {\n event.preventDefault();\n }\n }\n });\n }\n var isTableModule = isNOU(self.tableModule) ? true : self.tableModule ?\n self.tableModule.ensureInsideTableList : false;\n if ((event.which === 9 && isTableModule) || event.which !== 9) {\n if (event.which === 13 && self.editorMode === 'HTML') {\n value = {\n 'enterAction': self.enterKey\n };\n }\n this.editorManager.observer.notify((event.type === 'keydown' ? KEY_DOWN : KEY_UP), {\n event: event,\n callBack: this.onSuccess.bind(this, self),\n value: value,\n enterAction: self.enterKey\n });\n }\n }\n else if (!isNOU(args) && args.item.command && args.item.subCommand && ((args.item.command !== args.item.subCommand\n && args.item.command !== 'Font')\n || ((args.item.subCommand === 'FontName' || args.item.subCommand === 'FontSize') && args.name === 'dropDownSelect')\n || ((args.item.subCommand === 'BackgroundColor' || args.item.subCommand === 'FontColor')\n && args.name === 'colorPickerChanged') || args.item.subCommand === 'FormatPainter')) {\n extend(args, args, { requestType: args.item.subCommand, cancel: false, itemCollection: value, selectType: args.name }, true);\n self.trigger(CONSTANT.actionBegin, args, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n var formatPainterCopyAction = !isNOU(actionBeginArgs.name) && actionBeginArgs.name === 'format-copy';\n if (_this.getUndoRedoStack().length === 0 && actionBeginArgs.item.command !== 'Links'\n && actionBeginArgs.item.command !== 'Images' && !formatPainterCopyAction) {\n _this.saveData();\n }\n self.isBlur = false;\n self.contentModule.getEditPanel().focus();\n if (self.editorMode === 'HTML' && !isKeyboardVideoInsert) {\n if (isNOU(args.selectType) || (!isNOU(args.selectType) && args.selectType !== 'showDialog')) {\n saveSelection.restore();\n }\n }\n var command = actionBeginArgs.item.subCommand.toLocaleLowerCase();\n if (command === 'paste' || command === 'cut' || command === 'copy') {\n self.clipboardAction(command, event);\n }\n else {\n _this.editorManager.observer.notify(CONSTANT.checkUndo, { subCommand: actionBeginArgs.item.subCommand });\n _this.editorManager.execCommand(actionBeginArgs.item.command, actionBeginArgs.item.subCommand, event, _this.onSuccess.bind(_this, self), actionBeginArgs.item.value, actionBeginArgs.item.subCommand === 'Pre' && actionBeginArgs.selectType === 'dropDownSelect' ?\n { name: actionBeginArgs.selectType } : value, ('#' + self.getID() + ' iframe'), self.enterKey);\n }\n }\n });\n }\n if (isNOU(event) || event && event.action !== 'copy') {\n this.enableUndo(self);\n }\n };\n Formatter.prototype.getAncestorNode = function (node) {\n node = node.nodeType === 3 ? node.parentNode : node;\n return node;\n };\n /**\n * onKeyHandler method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.onKeyHandler = function (self, e) {\n var _this = this;\n this.editorManager.observer.notify(KEY_UP, {\n event: e, callBack: function () {\n self.notify(CONSTANT.contentChanged, {});\n _this.enableUndo(self);\n }\n });\n };\n /**\n * onSuccess method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {IMarkdownFormatterCallBack} events - specifies the event call back\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.onSuccess = function (self, events) {\n self.notify(CONSTANT.contentChanged, {});\n if (events && (isNOU(events.event) || events.event.action !== 'copy')) {\n this.enableUndo(self);\n self.notify(CONSTANT.execCommandCallBack, events);\n }\n self.trigger(CONSTANT.actionComplete, events, function (callbackArgs) {\n self.setPlaceHolder();\n if ((callbackArgs.requestType === 'Images' || callbackArgs.requestType === 'Links' || callbackArgs.requestType === 'Audios' || callbackArgs.requestType === 'Videos') && self.editorMode === 'HTML') {\n var args = callbackArgs;\n if (callbackArgs.requestType === 'Links' && callbackArgs.event &&\n callbackArgs.event.type === 'keydown' &&\n callbackArgs.event.keyCode === 32) {\n return;\n }\n self.notify(CONSTANT.insertCompleted, {\n args: args.event, type: callbackArgs.requestType, isNotify: true,\n elements: args.elements\n });\n }\n if (callbackArgs.requestType === 'VideosPlayPause') {\n self.notify('editAreaClick', { args: event });\n }\n self.autoResize();\n });\n };\n /**\n * Save the data for undo and redo action.\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.saveData = function (e) {\n this.editorManager.undoRedoManager.saveData(e);\n };\n /**\n * getUndoStatus method\n *\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.getUndoStatus = function () {\n return this.editorManager.undoRedoManager.getUndoStatus();\n };\n /* eslint-disable */\n /**\n * getUndoRedoStack method\n *\n * @param {IHtmlUndoRedoData} - specifies the redo data.\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n Formatter.prototype.getUndoRedoStack = function () {\n return this.editorManager.undoRedoManager.undoRedoStack;\n };\n /**\n * enableUndo method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @returns {void}\n * @hidden\n\n */\n Formatter.prototype.enableUndo = function (self) {\n var status = this.getUndoStatus();\n if (self.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n updateUndoRedoStatus(self.quickToolbarModule.inlineQTBar.quickTBarObj, status);\n }\n else {\n if (self.toolbarModule) {\n updateUndoRedoStatus(self.toolbarModule.baseToolbar, status);\n }\n }\n };\n return Formatter;\n}());\nexport { Formatter };\n","/**\n * Constant values for EditorManager\n */\n/**\n * Image plugin events\n *\n * @hidden\n */\nexport var IMAGE = 'INSERT-IMAGE';\nexport var AUDIO = 'INSERT-AUDIO';\nexport var VIDEO = 'INSERT-VIDEO';\nexport var TABLE = 'INSERT-TABLE';\nexport var LINK = 'INSERT-LINK';\nexport var INSERT_ROW = 'INSERT-ROW';\nexport var INSERT_COLUMN = 'INSERT-COLUMN';\nexport var DELETEROW = 'DELETE-ROW';\nexport var DELETECOLUMN = 'DELETE-COLUMN';\nexport var REMOVETABLE = 'REMOVE-TABLE';\nexport var TABLEHEADER = 'TABLE-HEADER';\nexport var TABLE_VERTICAL_ALIGN = 'TABLE_VERTICAL_ALIGN';\nexport var TABLE_MERGE = 'TABLE_MERGE';\nexport var TABLE_VERTICAL_SPLIT = 'TABLE_VERTICAL_SPLIT';\nexport var TABLE_HORIZONTAL_SPLIT = 'TABLE_HORIZONTAL_SPLIT';\nexport var TABLE_MOVE = 'TABLE_MOVE';\n/**\n * Alignments plugin events\n *\n * @hidden\n */\nexport var ALIGNMENT_TYPE = 'alignment-type';\n/**\n * Indents plugin events\n *\n * @hidden\n */\nexport var INDENT_TYPE = 'indent-type';\n/**\n * Constant tag names\n *\n * @hidden\n */\nexport var DEFAULT_TAG = 'p';\n/**\n * @hidden\n */\nexport var BLOCK_TAGS = ['address', 'article', 'aside', 'audio', 'blockquote',\n 'canvas', 'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main', 'nav',\n 'noscript', 'ol', 'output', 'p', 'pre', 'section', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr', 'ul', 'video', 'body'];\n/**\n * @hidden\n */\nexport var IGNORE_BLOCK_TAGS = ['td', 'th'];\n/**\n * @hidden\n */\nexport var TABLE_BLOCK_TAGS = ['table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'];\n/**\n * Selection plugin events\n *\n * @hidden\n */\nexport var SELECTION_TYPE = 'selection-type';\n/**\n * Insert HTML plugin events\n *\n * @hidden\n */\nexport var INSERTHTML_TYPE = 'inserthtml-type';\n/**\n * Insert Text plugin events\n *\n * @hidden\n */\nexport var INSERT_TEXT_TYPE = 'insert-text-type';\n/**\n * Clear Format HTML plugin events\n *\n * @hidden\n */\nexport var CLEAR_TYPE = 'clear-type';\n/**\n * Self closing tags\n *\n * @hidden\n */\nexport var SELF_CLOSING_TAGS = ['area', 'base', 'br', 'embed', 'hr', 'img', 'input', 'param', 'source', 'track', 'wbr', 'iframe', 'td'];\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `Selection` module is used to handle RTE Selections.\n */\nvar NodeSelection = /** @class */ (function () {\n function NodeSelection() {\n this.startNodeName = [];\n this.endNodeName = [];\n }\n NodeSelection.prototype.saveInstance = function (range, body) {\n this.range = range.cloneRange();\n this.rootNode = this.documentFromRange(range);\n this.body = body;\n this.startContainer = this.getNodeArray(range.startContainer, true);\n this.endContainer = this.getNodeArray(range.endContainer, false);\n this.startOffset = range.startOffset;\n this.endOffset = range.endOffset;\n this.html = this.body.innerHTML;\n return this;\n };\n NodeSelection.prototype.documentFromRange = function (range) {\n return (9 === range.startContainer.nodeType) ? range.startContainer : range.startContainer.ownerDocument;\n };\n NodeSelection.prototype.getRange = function (docElement) {\n var select = this.get(docElement);\n var range = select && select.rangeCount > 0 ? select.getRangeAt(select.rangeCount - 1) : docElement.createRange();\n return (range.startContainer !== docElement || range.endContainer !== docElement\n || range.startOffset || range.endOffset || (range.setStart(docElement.body, 0),\n range.collapse(!0)),\n range);\n };\n /**\n * get method\n *\n * @param {Document} docElement - specifies the get function\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.get = function (docElement) {\n return docElement.defaultView.getSelection();\n };\n /**\n * save method\n *\n * @param {Range} range - range value.\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.save = function (range, docElement) {\n range = (range) ? range.cloneRange() : this.getRange(docElement);\n return this.saveInstance(range, docElement.body);\n };\n /**\n * getIndex method\n *\n * @param {Node} node - specifies the node value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getIndex = function (node) {\n var index;\n var num = 0;\n node = !node.previousSibling && node.tagName === 'BR' ? node : node.previousSibling;\n if (node) {\n for (var type = node.nodeType; node; null) {\n index = node.nodeType;\n num++;\n //eslint-disable-next-line\n type = index;\n node = node.previousSibling;\n }\n }\n return num;\n };\n NodeSelection.prototype.isChildNode = function (nodeCollection, parentNode) {\n for (var index = 0; index < parentNode.childNodes.length; index++) {\n if (nodeCollection.indexOf(parentNode.childNodes[index]) > -1) {\n return true;\n }\n }\n return false;\n };\n NodeSelection.prototype.getNode = function (startNode, endNode, nodeCollection) {\n if (endNode === startNode &&\n (startNode.nodeType === 3 || !startNode.firstChild || nodeCollection.indexOf(startNode.firstChild) !== -1\n || this.isChildNode(nodeCollection, startNode))) {\n return null;\n }\n if (nodeCollection.indexOf(startNode.firstChild) === -1 && startNode.firstChild && !this.isChildNode(nodeCollection, startNode)) {\n return startNode.firstChild;\n }\n if (startNode.nextSibling) {\n return startNode.nextSibling;\n }\n if (!startNode.parentNode) {\n return null;\n }\n else {\n return startNode.parentNode;\n }\n };\n /**\n * getNodeCollection method\n *\n * @param {Range} range -specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getNodeCollection = function (range) {\n var startNode = range.startContainer.childNodes[range.startOffset]\n || range.startContainer;\n var endNode = range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]\n || range.endContainer;\n if ((startNode === endNode || (startNode.nodeName === 'BR' && startNode === range.endContainer.childNodes[range.endOffset])) &&\n startNode.childNodes.length === 0) {\n return [startNode];\n }\n if (range.startOffset === range.endOffset && range.startOffset !== 0 && range.startContainer.nodeName === 'PRE') {\n return [startNode.nodeName === 'BR' || startNode.nodeName === '#text' ? startNode : startNode.childNodes[0]];\n }\n var nodeCollection = [];\n do {\n if (nodeCollection.indexOf(startNode) === -1) {\n nodeCollection.push(startNode);\n }\n startNode = this.getNode(startNode, endNode, nodeCollection);\n } while (startNode);\n return nodeCollection;\n };\n /**\n * getParentNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getParentNodeCollection = function (range) {\n return this.getParentNodes(this.getNodeCollection(range), range);\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @param {Range} range - specifies the range values.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getParentNodes = function (nodeCollection, range) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection.indexOf(nodeCollection[index].parentNode) !== -1)\n || (nodeCollection[index].nodeType === 3 &&\n range.startContainer !== range.endContainer &&\n range.startContainer.parentNode !== range.endContainer.parentNode)) {\n nodeCollection.splice(index, 1);\n index--;\n }\n else if (nodeCollection[index].nodeType === 3) {\n nodeCollection[index] = nodeCollection[index].parentNode;\n }\n }\n return nodeCollection;\n };\n /**\n * getSelectionNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodeCollection = function (range) {\n return this.getSelectionNodes(this.getNodeCollection(range));\n };\n /**\n * getSelectionNodeCollection along with BR node method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodeCollectionBr = function (range) {\n return this.getSelectionNodesBr(this.getNodeCollection(range));\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx)))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * Get selection text nodes with br method.\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectionNodesBr = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeName !== 'BR' &&\n (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx))))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getInsertNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getInsertNodeCollection = function (range) {\n return this.getInsertNodes(this.getNodeCollection(range));\n };\n /**\n * getInsertNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getInsertNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection[index].childNodes.length !== 0 &&\n nodeCollection[index].nodeType !== 3) ||\n (nodeCollection[index].nodeType === 3 &&\n nodeCollection[index].textContent === '')) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getNodeArray method\n *\n * @param {Node} node - specifies the node content.\n * @param {boolean} isStart - specifies the boolean value.\n * @param {Document} root - specifies the root document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getNodeArray = function (node, isStart, root) {\n var array = [];\n // eslint-disable-next-line\n ((isStart) ? (this.startNodeName = []) : (this.endNodeName = []));\n for (; node !== (root ? root : this.rootNode); null) {\n if (isNullOrUndefined(node)) {\n break;\n }\n // eslint-disable-next-line\n (isStart) ? this.startNodeName.push(node.nodeName.toLowerCase()) : this.endNodeName.push(node.nodeName.toLowerCase());\n array.push(this.getIndex(node));\n node = node.parentNode;\n }\n return array;\n };\n NodeSelection.prototype.setRangePoint = function (range, isvalid, num, size) {\n var node = this.rootNode;\n var index = num.length;\n var constant = size;\n for (; index--; null) {\n node = node && node.childNodes[num[index]];\n }\n if (node && constant >= 0 && node.nodeName !== 'html') {\n if (node.nodeType === 3 && node.nodeValue.replace(/\\u00a0/g, ' ') === ' ') {\n constant = node.textContent.length;\n }\n range[isvalid ? 'setStart' : 'setEnd'](node, constant);\n }\n return range;\n };\n /**\n * restore method\n *\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.restore = function () {\n var range = this.range.cloneRange();\n range = this.setRangePoint(range, true, this.startContainer, this.startOffset);\n range = this.setRangePoint(range, false, this.endContainer, this.endOffset);\n this.selectRange(this.rootNode, range);\n return range;\n };\n NodeSelection.prototype.selectRange = function (docElement, range) {\n this.setRange(docElement, range);\n this.save(range, docElement);\n };\n /**\n * setRange method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setRange = function (docElement, range) {\n var selection = this.get(docElement);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n /**\n * setSelectionText method\n *\n * @param {Document} docElement - specifies the documrent\n * @param {Node} startNode - specifies the starting node.\n * @param {Node} endNode - specifies the the end node.\n * @param {number} startIndex - specifies the starting index.\n * @param {number} endIndex - specifies the end index.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionText = function (docElement, startNode, endNode, startIndex, endIndex) {\n var range = docElement.createRange();\n range.setStart(startNode, startIndex);\n range.setEnd(endNode, endIndex);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionContents method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionContents = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNode(element);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setSelectionNode = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNodeContents(element);\n this.setRange(docElement, range);\n };\n /**\n * getSelectedNodes method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.getSelectedNodes = function (docElement) {\n return this.getNodeCollection(this.getRange(docElement));\n };\n /**\n * Clear method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.Clear = function (docElement) {\n this.get(docElement).removeAllRanges();\n };\n /**\n * insertParentNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} newNode - specicfies the new node.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.insertParentNode = function (docElement, newNode, range) {\n range.surroundContents(newNode);\n this.selectRange(docElement, range);\n };\n /**\n * setCursorPoint method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Element} element - specifies the element.\n * @param {number} point - specifies the point.\n * @returns {void}\n * @hidden\n\n */\n NodeSelection.prototype.setCursorPoint = function (docElement, element, point) {\n var range = docElement.createRange();\n var selection = docElement.defaultView.getSelection();\n range.setStart(element, point);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n return NodeSelection;\n}());\nexport { NodeSelection };\n","/**\n * Default Markdown formats config for adapter\n */\nexport var markdownFormatTags = {\n 'h6': '###### ',\n 'h5': '##### ',\n 'h4': '#### ',\n 'h3': '### ',\n 'h2': '## ',\n 'h1': '# ',\n 'blockquote': '> ',\n 'pre': '```\\n',\n 'p': ''\n};\n/**\n * Default selection formats config for adapter\n */\nexport var markdownSelectionTags = {\n 'Bold': '**',\n 'Italic': '*',\n 'StrikeThrough': '~~',\n 'InlineCode': '`',\n 'SubScript': '',\n 'SuperScript': '',\n 'UpperCase': 'A-Z',\n 'LowerCase': 'a-z'\n};\n/**\n * Default Markdown lists config for adapter\n */\nexport var markdownListsTags = {\n 'OL': '1. ',\n 'UL': '- '\n};\n/**\n * Default html key config for adapter\n */\nexport var htmlKeyConfig = {\n 'toolbar-focus': 'alt+f10',\n 'escape': '27',\n 'insert-link': 'ctrl+k',\n 'insert-image': 'ctrl+shift+i',\n 'insert-audio': 'ctrl+shift+a',\n 'insert-video': 'ctrl+shift+v',\n 'insert-table': 'ctrl+shift+e',\n 'undo': 'ctrl+z',\n 'redo': 'ctrl+y',\n 'copy': 'ctrl+c',\n 'cut': 'ctrl+x',\n 'paste': 'ctrl+v',\n 'bold': 'ctrl+b',\n 'italic': 'ctrl+i',\n 'underline': 'ctrl+u',\n 'strikethrough': 'ctrl+shift+s',\n 'uppercase': 'ctrl+shift+u',\n 'lowercase': 'ctrl+shift+l',\n 'superscript': 'ctrl+shift+=',\n 'subscript': 'ctrl+=',\n 'indents': 'ctrl+]',\n 'outdents': 'ctrl+[',\n 'html-source': 'ctrl+shift+h',\n 'full-screen': 'ctrl+shift+f',\n 'decrease-fontsize': 'ctrl+shift+<',\n 'increase-fontsize': 'ctrl+shift+>',\n 'justify-center': 'ctrl+e',\n 'justify-full': 'ctrl+j',\n 'justify-left': 'ctrl+l',\n 'justify-right': 'ctrl+r',\n 'clear-format': 'ctrl+shift+r',\n 'ordered-list': 'ctrl+shift+o',\n 'unordered-list': 'ctrl+alt+o',\n 'space': '32',\n 'enter': '13',\n 'tab': 'tab',\n 'delete': '46',\n 'format-copy': 'ctrl+shift+c',\n 'format-paste': 'ctrl+shift+v'\n};\n/**\n * Default markdown key config for adapter\n */\nexport var markdownKeyConfig = {\n 'toolbar-focus': 'alt+f10',\n 'escape': '27',\n 'insert-link': 'ctrl+k',\n 'insert-image': 'ctrl+shift+i',\n 'insert-table': 'ctrl+shift+e',\n 'undo': 'ctrl+z',\n 'redo': 'ctrl+y',\n 'copy': 'ctrl+c',\n 'cut': 'ctrl+x',\n 'paste': 'ctrl+v',\n 'bold': 'ctrl+b',\n 'italic': 'ctrl+i',\n 'strikethrough': 'ctrl+shift+s',\n 'uppercase': 'ctrl+shift+u',\n 'lowercase': 'ctrl+shift+l',\n 'superscript': 'ctrl+shift+=',\n 'subscript': 'ctrl+=',\n 'full-screen': 'ctrl+shift+f',\n 'ordered-list': 'ctrl+shift+o',\n 'unordered-list': 'ctrl+alt+o'\n};\n/**\n * PasteCleanup Grouping of similar functionality tags\n */\nexport var pasteCleanupGroupingTags = {\n 'b': ['strong'],\n 'strong': ['b'],\n 'i': ['emp', 'cite'],\n 'emp': ['i', 'cite'],\n 'cite': ['i', 'emp']\n};\n/**\n * PasteCleanup Grouping of similar functionality tags\n */\nexport var listConversionFilters = {\n 'first': 'MsoListParagraphCxSpFirst',\n 'middle': 'MsoListParagraphCxSpMiddle',\n 'last': 'MsoListParagraphCxSpLast'\n};\n/**\n * Dom-Node Grouping of self closing tags\n *\n * @hidden\n */\nexport var selfClosingTags = [\n 'BR',\n 'IMG'\n];\n","import * as CONSTANT from './../base/constant';\nimport { append, detach, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/index';\nimport { selfClosingTags } from '../../common/config';\nimport { getLastTextNode } from '../../common/util';\nexport var markerClassName = {\n startSelection: 'e-editor-select-start',\n endSelection: 'e-editor-select-end'\n};\n/**\n * DOMNode internal plugin\n *\n * @hidden\n\n */\nvar DOMNode = /** @class */ (function () {\n /**\n * Constructor for creating the DOMNode plugin\n *\n * @param {Element} parent - specifies the parent element\n * @param {Document} currentDocument - specifies the current document.\n * @hidden\n\n */\n function DOMNode(parent, currentDocument) {\n this.parent = parent;\n this.nodeSelection = new NodeSelection();\n this.currentDocument = currentDocument;\n }\n /**\n * contents method\n *\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.contents = function (element) {\n return (element && 'IFRAME' !== element.tagName ? Array.prototype.slice.call(element.childNodes || []) : []);\n };\n /**\n * isBlockNode method\n *\n * @param {Element} element - specifies the node element.\n * @returns {boolean} - sepcifies the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isBlockNode = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && CONSTANT.BLOCK_TAGS.indexOf(element.tagName.toLowerCase()) >= 0));\n };\n /**\n * isLink method\n *\n * @param {Element} element - specifies the element\n * @returns {boolean} - specifies the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isLink = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && 'a' === element.tagName.toLowerCase()));\n };\n /**\n * blockParentNode method\n *\n * @param {Element} element - specifies the element\n * @returns {Element} - returns the element value\n * @hidden\n\n */\n DOMNode.prototype.blockParentNode = function (element) {\n for (; element && element.parentNode !== this.parent && ((!element.parentNode ||\n !this.hasClass(element.parentNode, 'e-node-inner'))); null) {\n element = element.parentNode;\n if (this.isBlockNode(element)) {\n return element;\n }\n }\n return element;\n };\n /**\n * rawAttributes method\n *\n * @param {Element} element - specifies the element\n * @returns {string} - returns the string value\n * @hidden\n\n */\n DOMNode.prototype.rawAttributes = function (element) {\n var rawAttr = {};\n var attributes = element.attributes;\n if (attributes.length > 0) {\n for (var d = 0; d < attributes.length; d++) {\n var e = attributes[d];\n rawAttr[e.nodeName] = e.value;\n }\n }\n return rawAttr;\n };\n /**\n * attributes method\n *\n * @param {Element} element - sepcifies the element.\n * @returns {string} - returns the string value.\n * @hidden\n\n */\n DOMNode.prototype.attributes = function (element) {\n if (!element) {\n return '';\n }\n var attr = '';\n var rawAttr = this.rawAttributes(element);\n var orderRawAttr = Object.keys(rawAttr).sort();\n for (var e = 0; e < orderRawAttr.length; e++) {\n var attrKey = orderRawAttr[e];\n var attrValue = rawAttr[\"\" + attrKey];\n /* eslint-disable */\n if (attrValue.indexOf(\"'\") < 0 && attrValue.indexOf('\"') >= 0) {\n attr += ' ' + attrKey + \"='\" + attrValue + \"'\";\n }\n else if (attrValue.indexOf('\"') >= 0 && attrValue.indexOf(\"'\") >= 0) {\n /* eslint-enable */\n attrValue = attrValue.replace(/\"/g, '"');\n attr += ' ' + attrKey + '=\"' + attrValue + '\"';\n }\n else {\n attr += ' ' + attrKey + '=\"' + attrValue + '\"';\n }\n }\n return attr;\n };\n /**\n * clearAttributes method\n *\n * @param {Element} element - specifies the element\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.clearAttributes = function (element) {\n for (var attr = element.attributes, c = attr.length - 1; c >= 0; c--) {\n var key = attr[c];\n element.removeAttribute(key.nodeName);\n }\n };\n /**\n * openTagString method\n *\n * @param {Element} element - specifies the element.\n * @returns {string} - returns the string\n * @hidden\n\n */\n DOMNode.prototype.openTagString = function (element) {\n return '<' + element.tagName.toLowerCase() + this.attributes(element) + '>';\n };\n /**\n * closeTagString method\n *\n * @param {Element} element - specifies the element\n * @returns {string} - returns the string value\n * @hidden\n\n */\n DOMNode.prototype.closeTagString = function (element) {\n return '';\n };\n /**\n * createTagString method\n *\n * @param {string} tagName - specifies the tag name\n * @param {Element} relativeElement - specifies the relative element\n * @param {string} innerHTML - specifies the string value\n * @returns {string} - returns the string value.\n * @hidden\n\n */\n DOMNode.prototype.createTagString = function (tagName, relativeElement, innerHTML) {\n return '<' + tagName.toLowerCase() + this.attributes(relativeElement) + '>' + innerHTML + '';\n };\n /**\n * isList method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isList = function (element) {\n return !!element && ['UL', 'OL'].indexOf(element.tagName) >= 0;\n };\n /**\n * isElement method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isElement = function (element) {\n return element === this.parent;\n };\n /**\n * isEditable method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isEditable = function (element) {\n return ((!element.getAttribute || element.getAttribute('contenteditable') === 'true')\n && ['STYLE', 'SCRIPT'].indexOf(element.tagName) < 0);\n };\n /**\n * hasClass method\n *\n * @param {Element} element - specifes the element.\n * @param {string} className - specifies the class name value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.hasClass = function (element, className) {\n return element && element.classList && element.classList.contains(className);\n };\n /**\n * replaceWith method\n *\n * @param {Element} element - specifes the element.\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.replaceWith = function (element, value) {\n var parentNode = element.parentNode;\n parentNode.insertBefore(this.parseHTMLFragment(value), element);\n detach(element);\n };\n /**\n * parseHTMLFragment method\n *\n * @param {string} value - specifies the string value\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.parseHTMLFragment = function (value) {\n /* eslint-disable */\n var temp = createElement('template');\n temp.innerHTML = value;\n if (temp.content instanceof DocumentFragment) {\n return temp.content;\n }\n else {\n return document.createRange().createContextualFragment(value);\n }\n /* eslint-enable */\n };\n /**\n * wrap method\n *\n * @param {Element} element - specifies the element\n * @param {Element} wrapper - specifies the element.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.wrap = function (element, wrapper) {\n element.parentNode.insertBefore(wrapper, element);\n wrapper = element.previousSibling;\n wrapper.appendChild(element);\n return wrapper;\n };\n /**\n * insertAfter method\n *\n * @param {Element} newNode - specifies the new node element\n * @param {Element} referenceNode - specifies the referenece node\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n /**\n * wrapInner method\n *\n * @param {Element} parent - specifies the parent element.\n * @param {Element} wrapper - specifies the wrapper element.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.wrapInner = function (parent, wrapper) {\n parent.appendChild(wrapper);\n wrapper = parent.querySelector('.e-rte-wrap-inner');\n wrapper.classList.remove('e-rte-wrap-inner');\n if (wrapper.classList.length === 0) {\n wrapper.removeAttribute('class');\n }\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n return wrapper;\n };\n /**\n * unWrap method\n *\n * @param {Element} element - specifies the element.\n * @returns {Element} - returns the element.\n * @hidden\n\n */\n DOMNode.prototype.unWrap = function (element) {\n var parent = element.parentNode;\n var unWrapNode = [];\n while (element.firstChild) {\n unWrapNode.push(element.firstChild);\n parent.insertBefore(element.firstChild, element);\n }\n unWrapNode = unWrapNode.length > 0 ? unWrapNode : [element.parentNode];\n parent.removeChild(element);\n return unWrapNode;\n };\n /**\n * getSelectedNode method\n *\n * @param {Element} element - specifies the element\n * @param {number} index - specifies the index value.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.getSelectedNode = function (element, index) {\n if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0 &&\n element.childNodes[index - 1] && element.childNodes[index - 1].nodeType === Node.ELEMENT_NODE &&\n (element.childNodes[index - 1].classList.contains(markerClassName.startSelection) ||\n element.childNodes[index - 1].classList.contains(markerClassName.endSelection))) {\n element = element.childNodes[index - 1];\n }\n else if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0 && element.childNodes[index]) {\n element = element.childNodes[index];\n }\n if (element.nodeType === Node.TEXT_NODE) {\n element = element.parentNode;\n }\n return element;\n };\n /**\n * nodeFinds method\n *\n * @param {Element} element - specifies the element.\n * @param {Element[]} elements - specifies the array of elements\n * @returns {Element[]} - returnts the array elements\n * @hidden\n\n */\n DOMNode.prototype.nodeFinds = function (element, elements) {\n var existNodes = [];\n for (var i = 0; i < elements.length; i++) {\n if (element.contains(elements[i]) && element !== elements[i]) {\n existNodes.push(elements[i]);\n }\n }\n return existNodes;\n };\n /**\n * isEditorArea method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n DOMNode.prototype.isEditorArea = function () {\n var range = this.getRangePoint(0);\n var element;\n for (element = range.commonAncestorContainer; element && !this.isElement(element); null) {\n element = element.parentNode;\n }\n return !!this.isElement(element);\n };\n /**\n * getRangePoint method\n *\n * @param {number} point - specifies the number value.\n * @returns {Range} - returns the range.\n * @hidden\n\n */\n DOMNode.prototype.getRangePoint = function (point) {\n var selection = this.getSelection();\n var ranges = [];\n if (selection && selection.getRangeAt && selection.rangeCount) {\n ranges = [];\n for (var f = 0; f < selection.rangeCount; f++) {\n ranges.push(selection.getRangeAt(f));\n }\n }\n else {\n ranges = [this.currentDocument.createRange()];\n }\n return 'undefined' !== typeof point ? ranges[point] : ranges;\n };\n DOMNode.prototype.getSelection = function () {\n return this.nodeSelection.get(this.currentDocument);\n };\n /**\n * getPreviousNode method\n *\n * @param {Element} element - specifies the element\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.getPreviousNode = function (element) {\n element = element.previousElementSibling;\n for (; element && element.textContent === '\\n'; null) {\n element = element.previousElementSibling;\n }\n return element;\n };\n /**\n * encode method\n *\n * @param {string} value - specifies the string value\n * @returns {string} - specifies the string value\n * @hidden\n\n */\n DOMNode.prototype.encode = function (value) {\n var divNode = document.createElement('div');\n divNode.innerText = value;\n // eslint-disable-next-line\n return divNode.innerHTML.replace(//gi, '\\n');\n };\n /**\n * saveMarker method\n *\n * @param {NodeSelection} save - specifies the node selection,\n * @param {string} action - specifies the action value.\n * @returns {NodeSelection} - returns the value\n * @hidden\n\n */\n DOMNode.prototype.saveMarker = function (save, action) {\n var start = this.parent.querySelector('.' + markerClassName.startSelection);\n var end = this.parent.querySelector('.' + markerClassName.endSelection);\n var startTextNode;\n var endTextNode;\n if (start.textContent === '' && isNullOrUndefined(end) && action !== 'tab') {\n if (start.childNodes.length === 1 && start.childNodes[0].nodeName === 'BR') {\n start.innerHTML = '
';\n }\n else {\n start.innerHTML = '';\n }\n }\n if (this.hasClass(start, markerClassName.startSelection) && start.classList.length > 1) {\n var replace = this.createTagString(CONSTANT.DEFAULT_TAG, start, this.encode(start.textContent));\n this.replaceWith(start, replace);\n start = this.parent.querySelector('.' + markerClassName.startSelection);\n start.classList.remove(markerClassName.startSelection);\n startTextNode = start.childNodes[0];\n }\n else {\n startTextNode = this.unWrap(start)[0];\n }\n if (this.hasClass(end, markerClassName.endSelection) && end.classList.length > 1) {\n var replace = this.createTagString(CONSTANT.DEFAULT_TAG, end, this.encode(end.textContent));\n this.replaceWith(end, replace);\n end = this.parent.querySelector('.' + markerClassName.endSelection);\n end.classList.remove(markerClassName.endSelection);\n endTextNode = end.childNodes[0];\n }\n else {\n endTextNode = end ? this.unWrap(end)[0] : startTextNode;\n }\n save.startContainer = save.getNodeArray(startTextNode, true);\n save.endContainer = save.getNodeArray(endTextNode, false);\n return save;\n };\n DOMNode.prototype.marker = function (className, textContent) {\n return '' + textContent + '';\n };\n /**\n * setMarker method\n *\n * @param {NodeSelection} save - specifies the node selection.\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.setMarker = function (save) {\n var range = save.range;\n var startChildNodes = range.startContainer.childNodes;\n var isTableStart = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'TABLE';\n var start = ((isTableStart ? getLastTextNode(startChildNodes[range.startOffset + 1]) :\n startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) : range.startOffset]) || range.startContainer);\n var end = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]\n || range.endContainer);\n if ((start.nodeType === Node.ELEMENT_NODE && end.nodeType === Node.ELEMENT_NODE) && (start.contains(end) || end.contains(start))) {\n var existNode = start.contains(end) ? start : end;\n var isElement = existNode.nodeType !== Node.TEXT_NODE;\n if (isElement) {\n var nodes = [];\n var textNodes = [];\n for (var node = existNode; existNode.contains(node); null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (textNodes.indexOf(node) < 0 && (node.nodeType === Node.TEXT_NODE ||\n (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0\n && (node.tagName === 'BR' || node.tagName === 'IMG')))) {\n textNodes.push(node);\n }\n }\n if (textNodes.length) {\n start = start.contains(end) ? textNodes[0] : start;\n end = textNodes[textNodes.length - 1];\n }\n }\n }\n if (start !== end) {\n if (start.nodeType !== Node.TEXT_NODE && ((start.tagName === 'BR' &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(start.parentNode.tagName.toLocaleLowerCase()) >= 0) ||\n start.tagName === 'IMG')) {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + markerClassName.startSelection);\n markerStart.appendChild(start);\n }\n else {\n if (start.nodeType !== 3 && start.nodeName !== '#text') {\n var marker = this.marker(markerClassName.startSelection, '');\n append([this.parseHTMLFragment(marker)], start);\n }\n else {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n }\n }\n if (end.nodeType !== Node.TEXT_NODE && end.tagName === 'BR' &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(end.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n this.replaceWith(end, this.marker(markerClassName.endSelection, this.encode(end.textContent)));\n var markerEnd = range.endContainer.querySelector('.' + markerClassName.endSelection);\n markerEnd.appendChild(end);\n }\n else {\n this.ensureSelfClosingTag(end, markerClassName.endSelection, range);\n }\n }\n else {\n this.ensureSelfClosingTag(start, markerClassName.startSelection, range);\n }\n };\n /**\n * ensureSelfClosingTag method\n *\n * @param {Element} start - specifies the element.\n * @param {string} className - specifes the class name string value\n * @param {Range} range - specifies the range value\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.ensureSelfClosingTag = function (start, className, range) {\n var isTable = false;\n if (start.nodeType === 3) {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n }\n else if (start.tagName === 'BR') {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + className);\n markerStart.appendChild(start);\n }\n else {\n if (start.tagName === 'IMG') {\n var parNode = document.createElement('p');\n start.parentElement.insertBefore(parNode, start);\n parNode.appendChild(start);\n start = parNode.children[0];\n }\n if (start.tagName === 'TABLE') {\n isTable = true;\n if (start.textContent === '') {\n var tdNode = start.querySelectorAll('td');\n start = tdNode[tdNode.length - 1];\n start = !isNullOrUndefined(start.childNodes[0]) ? start.childNodes[0] : start;\n }\n else {\n var lastNode = start.lastChild;\n while (lastNode.nodeType !== 3 && lastNode.nodeName !== '#text' &&\n lastNode.nodeName !== 'BR') {\n lastNode = lastNode.lastChild;\n }\n start = lastNode;\n }\n }\n for (var i = 0; i < selfClosingTags.length; i++) {\n start = (start.tagName === selfClosingTags[i] && !isTable) ? start.parentNode : start;\n }\n if (start.nodeType === 3 && start.nodeName === '#text') {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n }\n else if (start.nodeName === 'BR') {\n this.replaceWith(start, this.marker(markerClassName.endSelection, this.encode(start.textContent)));\n var markerEnd = range.endContainer.querySelector('.' + markerClassName.endSelection);\n markerEnd.appendChild(start);\n }\n else {\n var marker = this.marker(className, '');\n append([this.parseHTMLFragment(marker)], start);\n }\n }\n };\n /**\n * createTempNode method\n *\n * @param {Element} element - specifies the element.\n * @returns {Element} - returns the element\n * @hidden\n\n */\n DOMNode.prototype.createTempNode = function (element) {\n var textContent = element.textContent;\n if (element.tagName === 'BR') {\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + '>';\n var node = element.parentNode;\n if (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.tagName.toLocaleLowerCase()) >= 0) {\n element = this.wrap(element, this.parseHTMLFragment(wrapper));\n }\n }\n else if (((element.nodeType !== Node.TEXT_NODE &&\n (element.classList.contains(markerClassName.startSelection) ||\n element.classList.contains(markerClassName.endSelection))) ||\n textContent.replace(/\\n/g, '').replace(/(^ *)|( *$)/g, '').length > 0 ||\n textContent.length && textContent.indexOf('\\n') < 0)) {\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + '>';\n var target = element;\n element = this.wrap(element, this.parseHTMLFragment(wrapper));\n var ignoreBr = target.nodeType === Node.ELEMENT_NODE && target.firstChild && target.firstChild.nodeName === 'BR'\n && (target.classList.contains(markerClassName.startSelection) ||\n target.classList.contains(markerClassName.endSelection));\n if (!ignoreBr && element.nextElementSibling && element.nextElementSibling.tagName === 'BR') {\n element.appendChild(element.nextElementSibling);\n }\n }\n return element;\n };\n /**\n * getImageTagInSelection method\n *\n * @returns {void}\n * @hidden\n\n */\n DOMNode.prototype.getImageTagInSelection = function () {\n var selection = this.getSelection();\n if (this.isEditorArea() && selection.rangeCount) {\n return selection.focusNode.querySelectorAll('img');\n }\n return null;\n };\n /**\n * blockNodes method\n *\n * @returns {Node[]} - returns the node array values\n * @hidden\n\n */\n DOMNode.prototype.blockNodes = function () {\n var collectionNodes = [];\n var selection = this.getSelection();\n if (this.isEditorArea() && selection.rangeCount) {\n var ranges = this.getRangePoint();\n for (var j = 0; j < ranges.length; j++) {\n var parentNode = void 0;\n var range = ranges[j];\n var startNode = this.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.getSelectedNode(range.endContainer, range.endOffset);\n if (this.isBlockNode(startNode) && collectionNodes.indexOf(startNode) < 0) {\n collectionNodes.push(startNode);\n }\n parentNode = this.blockParentNode(startNode);\n if (parentNode && collectionNodes.indexOf(parentNode) < 0) {\n if (CONSTANT.IGNORE_BLOCK_TAGS.indexOf(parentNode.tagName.toLocaleLowerCase()) >= 0 && (startNode.tagName === 'BR' ||\n startNode.nodeType === Node.TEXT_NODE ||\n startNode.classList.contains(markerClassName.startSelection) ||\n startNode.classList.contains(markerClassName.endSelection))) {\n var tempNode = startNode.previousSibling &&\n startNode.previousSibling.nodeType === Node.TEXT_NODE ?\n startNode.previousSibling : startNode;\n if (!startNode.nextSibling && !startNode.previousSibling && startNode.tagName === 'BR') {\n collectionNodes.push(tempNode);\n }\n else {\n collectionNodes.push(this.createTempNode(tempNode));\n }\n }\n else {\n collectionNodes.push(parentNode);\n }\n }\n var nodes = [];\n for (var node = startNode; node !== endNode && node !== this.parent; null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node && node.nodeType !== 8 && (node.tagName === 'BR' || (node.nodeType === Node.TEXT_NODE &&\n node.textContent.trim() !== '') || (node.nodeType !== Node.TEXT_NODE &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection)))) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node);\n }\n else if (node.nextSibling && node.nextSibling.nodeType !== 8 &&\n (node.nextSibling.tagName === 'BR' ||\n node.nextSibling.nodeType === Node.TEXT_NODE ||\n node.nextSibling.classList.contains(markerClassName.startSelection) ||\n node.nextSibling.classList.contains(markerClassName.endSelection)) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.nextSibling.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node.nextSibling);\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (collectionNodes.indexOf(node) < 0 && node.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0 &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection))) {\n collectionNodes.push(this.createTempNode(node));\n }\n if (this.isBlockNode(node) && this.ignoreTableTag(node) && nodes.indexOf(node) < 0 &&\n collectionNodes.indexOf(node) < 0 && (node !== endNode || range.endOffset > 0)) {\n collectionNodes.push(node);\n }\n if (node.nodeName === 'IMG' && node.parentElement.contentEditable === 'true') {\n collectionNodes.push(node);\n }\n }\n parentNode = this.blockParentNode(endNode);\n if (parentNode && this.ignoreTableTag(parentNode) && collectionNodes.indexOf(parentNode) < 0 &&\n (!isNullOrUndefined(parentNode.previousElementSibling) && parentNode.previousElementSibling.tagName !== 'IMG')) {\n collectionNodes.push(parentNode);\n }\n }\n }\n for (var i = collectionNodes.length - 1; i > 0; i--) {\n var nodes = this.nodeFinds(collectionNodes[i], collectionNodes);\n if (nodes.length) {\n var listNodes = collectionNodes[i].querySelectorAll('ul, ol');\n if (collectionNodes[i].tagName === 'LI' && listNodes.length > 0) {\n continue;\n }\n else {\n collectionNodes.splice(i, 1);\n }\n }\n }\n return collectionNodes;\n };\n DOMNode.prototype.ignoreTableTag = function (element) {\n return !(CONSTANT.TABLE_BLOCK_TAGS.indexOf(element.tagName.toLocaleLowerCase()) >= 0);\n };\n return DOMNode;\n}());\nexport { DOMNode };\n","import * as CONSTANT from './../base/constant';\nimport { createElement, detach, prepend, append, attributes, Browser } from '@syncfusion/ej2-base';\nimport { markerClassName } from './dom-node';\nimport * as EVENTS from './../../common/constant';\nimport { setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { isNullOrUndefined, isNullOrUndefined as isNOU, closest } from '@syncfusion/ej2-base';\n/**\n * Lists internal component\n *\n * @hidden\n\n */\nvar Lists = /** @class */ (function () {\n /**\n * Constructor for creating the Lists plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function Lists(parent) {\n this.parent = parent;\n this.domNode = this.parent.domNode;\n this.addEventListener();\n }\n Lists.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.LIST_TYPE, this.applyListsHandler, this);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, this.onKeyUp, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n this.parent.observer.on(EVENTS.SPACE_ACTION, this.spaceKeyAction, this);\n };\n Lists.prototype.testList = function (elem) {\n var olListRegex = [/^[\\d]+[.]+$/,\n /^(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})[.]$/gi,\n /^[a-zA-Z][.]+$/];\n var elementStart = !isNullOrUndefined(elem) ? elem.innerText.trim().split('.')[0] + '.' : null;\n if (!isNullOrUndefined(elementStart)) {\n for (var i = 0; i < olListRegex.length; i++) {\n if (olListRegex[i].test(elementStart)) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.testCurrentList = function (range) {\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(range.startContainer.textContent.slice(0, range.startOffset))) {\n var currentContent = range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim();\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(currentContent) && currentContent.length === 2) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.spaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n // eslint-disable-next-line\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n var preElement = startNode.previousElementSibling;\n var nextElement = startNode.nextElementSibling;\n var preElemULStart = !isNullOrUndefined(preElement) ?\n preElement.innerText.trim().substring(0, 1) : null;\n var nextElemULStart = !isNullOrUndefined(nextElement) ?\n nextElement.innerText.trim().substring(0, 1) : null;\n var startElementOLTest = this.testCurrentList(range);\n var preElementOLTest = this.testList(preElement);\n var nextElementOLTest = this.testList(nextElement);\n if (!preElementOLTest && !nextElementOLTest && preElemULStart !== '*' && nextElemULStart !== '*') {\n if (startElementOLTest) {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n }\n else if (range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||\n range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim() === '-') {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n }\n }\n };\n Lists.prototype.enterList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = range.startContainer.nodeName === 'LI' ? range.startContainer :\n range.startContainer.parentElement.closest('LI');\n var endNode = range.endContainer.nodeName === 'LI' ? range.endContainer :\n range.endContainer.parentElement.closest('LI');\n // Checks for Image, Audio , Video Element inside List Element\n var hasMediaElem = false;\n if (!isNOU(startNode)) {\n var videoElemList = startNode.querySelectorAll('.e-video-clickelem');\n var embedVideoElem = videoElemList.length > 0 && videoElemList[0].childNodes[0].nodeName === 'IFRAME';\n hasMediaElem = startNode.querySelectorAll('IMG').length > 0 || startNode.querySelectorAll('AUDIO').length > 0 || startNode.querySelectorAll('VIDEO').length > 0 || embedVideoElem;\n }\n if (!isNOU(startNode) && !isNOU(endNode) && startNode === endNode && startNode.tagName === 'LI' &&\n startNode.textContent.trim() === '' && !hasMediaElem) {\n if (startNode.innerHTML.indexOf(' ') >= 0) {\n return;\n }\n if (startNode.textContent.charCodeAt(0) === 65279) {\n startNode.textContent = '';\n }\n var startNodeParent = startNode.parentElement;\n if (isNOU(startNodeParent.parentElement.closest('UL')) && isNOU(startNodeParent.parentElement.closest('OL'))) {\n if (!isNOU(startNode.nextElementSibling)) {\n var nearBlockNode = this.parent.domNode.blockParentNode(startNode);\n this.parent.nodeCutter.GetSpliceNode(range, nearBlockNode);\n }\n var insertTag = void 0;\n if (e.enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
';\n }\n else if (e.enterAction === 'P') {\n insertTag = createElement('p');\n insertTag.innerHTML = '
';\n }\n else {\n insertTag = createElement('br');\n }\n this.parent.domNode.insertAfter(insertTag, startNodeParent);\n e.event.preventDefault();\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 0);\n if (startNodeParent.textContent === '' && (startNodeParent.querySelectorAll('audio,video').length === 0)) {\n detach(startNodeParent);\n }\n else {\n detach(startNode);\n }\n }\n }\n };\n Lists.prototype.backspaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;\n endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;\n if (startNode === endNode && !isNullOrUndefined(closest(startNode, 'li')) &&\n ((startNode.textContent.trim() === '' && startNode.textContent.charCodeAt(0) === 65279) ||\n (startNode.textContent.length === 1 && startNode.textContent.charCodeAt(0) === 8203))) {\n startNode.textContent = '';\n }\n if (startNode === endNode && startNode.tagName === 'LI' && startNode.textContent.length === 0 &&\n isNOU(startNode.previousElementSibling)) {\n startNode.removeAttribute('style');\n }\n if (startNode === endNode && startNode.textContent === '') {\n if (startNode.parentElement.tagName === 'LI' && endNode.parentElement.tagName === 'LI') {\n detach(startNode);\n }\n else if (startNode.closest('ul') || startNode.closest('ol')) {\n var parentList = !isNOU(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.firstElementChild === startNode && !isNOU(parentList.children[1]) &&\n (parentList.children[1].tagName === 'OL' || parentList.children[1].tagName === 'UL')) {\n if (parentList.tagName === parentList.children[1].tagName) {\n while (parentList.children[1].lastChild) {\n this.parent.domNode.insertAfter(parentList.children[1].lastChild, parentList.children[1]);\n }\n detach(parentList.children[1]);\n }\n else {\n parentList.parentElement.insertBefore(parentList.children[1], parentList);\n }\n }\n }\n }\n else if (!isNOU(startNode.firstChild) && startNode.firstChild.nodeName === 'BR' &&\n (!isNullOrUndefined(startNode.childNodes[1]) && (startNode.childNodes[1].nodeName === 'UL' ||\n startNode.childNodes[1].nodeName === 'OL'))) {\n var parentList = !isNOU(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.tagName === startNode.childNodes[1].nodeName) {\n while (startNode.childNodes[1].lastChild) {\n this.parent.domNode.insertAfter(startNode.children[1].lastChild, startNode);\n }\n detach(startNode.childNodes[1]);\n }\n else {\n parentList.parentElement.insertBefore(startNode.children[1], parentList);\n }\n }\n this.removeList(range, e);\n this.firstListBackSpace(range, e);\n };\n Lists.prototype.removeList = function (range, e) {\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;\n endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;\n startNode = startNode.nodeName !== 'LI' && !isNOU(startNode.closest('LI')) ? startNode.closest('LI') : startNode;\n endNode = endNode.nodeName !== 'LI' && !isNOU(endNode.closest('LI')) ? endNode.closest('LI') : endNode;\n if (((range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'LI') &&\n isNOU(endNode.nextElementSibling) && endNode.textContent.length === range.endOffset &&\n isNOU(startNode.previousElementSibling) && range.startOffset === 0) ||\n (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&\n range.startOffset === 0 && range.endOffset === 1)) {\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n detach(range.commonAncestorContainer.childNodes[0]);\n }\n else if (range.commonAncestorContainer.nodeName === 'LI') {\n detach(range.commonAncestorContainer.parentElement);\n }\n else {\n detach(range.commonAncestorContainer);\n }\n e.event.preventDefault();\n }\n };\n Lists.prototype.onKeyUp = function () {\n if (!isNOU(this.commonLIParent) && !isNOU(this.commonLIParent.querySelector('.removeList'))) {\n var currentLIElem = this.commonLIParent.querySelector('.removeList');\n while (!isNOU(currentLIElem.firstChild)) {\n this.parent.domNode.insertAfter(currentLIElem.firstChild, currentLIElem);\n }\n detach(currentLIElem);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Lists.prototype.firstListBackSpace = function (range, _e) {\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n if (!isNOU(startNode.closest('OL'))) {\n this.commonLIParent = startNode.closest('OL');\n }\n else if (!isNOU(startNode.closest('UL'))) {\n this.commonLIParent = startNode.closest('UL');\n }\n if (startNode.nodeName === 'LI' && range.startOffset === 0 && range.endOffset === 0 &&\n isNOU(startNode.previousSibling) && !isNOU(this.commonLIParent) && isNOU(this.commonLIParent.previousSibling) &&\n (isNOU(this.commonLIParent.parentElement.closest('OL')) && isNOU(this.commonLIParent.parentElement.closest('UL')) &&\n isNOU(this.commonLIParent.parentElement.closest('LI')))) {\n var currentElem = createElement('P');\n currentElem.innerHTML = '​';\n startNode.classList.add('removeList');\n this.commonLIParent.parentElement.insertBefore(currentElem, this.commonLIParent);\n }\n };\n Lists.prototype.keyDownHandler = function (e) {\n if (e.event.which === 13) {\n this.enterList(e);\n }\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n if (e.event.which === 8) {\n this.backspaceList(e);\n }\n if (e.event.which === 46 && e.event.action === 'delete') {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var commonAncestor = range.commonAncestorContainer;\n var startEle = range.startContainer;\n var endEle = range.endContainer;\n var startNode = startEle.nodeType === 3 ? startEle.parentElement : startEle;\n var endNode = endEle.nodeType === 3 ? endEle.parentElement : endEle;\n if ((commonAncestor.nodeName === 'UL' || commonAncestor.nodeName === 'OL') && startNode !== endNode\n && (!isNullOrUndefined(closest(startNode, 'ul')) || !isNullOrUndefined(closest(startNode, 'ol')))\n && (!isNullOrUndefined(closest(endNode, 'ul')) || !isNullOrUndefined(closest(endNode, 'ol')))\n && (commonAncestor.lastElementChild === closest(endNode, 'li')) && !range.collapsed) {\n detach(commonAncestor);\n }\n this.removeList(range, e);\n }\n if (e.event.which === 9) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n }\n var blockNodes = void 0;\n var startOffset = range.startOffset;\n var endOffset = range.endOffset;\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n if ((startNode === endNode && (startNode.nodeName === 'BR' || startNode.nodeName === '#text') &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(startNode.parentNode.tagName.toLocaleLowerCase()) >= 0)) {\n return;\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n this.domNode.setMarker(this.saveSelection);\n }\n blockNodes = this.domNode.blockNodes();\n }\n var nodes = [];\n var isNested = true;\n for (var i = 0; i < blockNodes.length; i++) {\n if (blockNodes[i].parentNode.tagName === 'LI') {\n nodes.push(blockNodes[i].parentNode);\n }\n else if (blockNodes[i].tagName === 'LI' && blockNodes[i].childNodes[0].tagName !== 'P' &&\n (blockNodes[i].childNodes[0].tagName !== 'OL' &&\n blockNodes[i].childNodes[0].tagName !== 'UL')) {\n nodes.push(blockNodes[i]);\n }\n }\n if (nodes.length > 1 || nodes.length && ((startOffset === 0 && endOffset === 0) || e.ignoreDefault)) {\n e.event.preventDefault();\n e.event.stopPropagation();\n this.currentAction = this.getAction(nodes[0]);\n if (e.event.shiftKey) {\n this.revertList(nodes, e);\n this.revertClean();\n }\n else {\n isNested = this.nestedList(nodes);\n }\n if (isNested) {\n this.cleanNode();\n this.parent.editableElement.focus();\n }\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes(),\n event: e.event\n });\n }\n }\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n if (e.event && e.event.shiftKey && e.event.key === 'Tab') {\n e.event.action = 'tab';\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection, e.event.action);\n this.saveSelection.restore();\n }\n }\n }\n else {\n switch (e.event.action) {\n case 'ordered-list':\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'unordered-list':\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n }\n };\n Lists.prototype.spaceKeyAction = function (e) {\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n };\n Lists.prototype.getAction = function (element) {\n var parentNode = element.parentNode;\n return (parentNode.nodeName === 'OL' ? 'OL' : 'UL');\n };\n Lists.prototype.revertClean = function () {\n var collectionNodes = this.parent.editableElement.querySelectorAll('ul, ol');\n for (var i = 0; i < collectionNodes.length; i++) {\n var listNodes = collectionNodes[i].querySelectorAll('ul, ol');\n if (listNodes.length > 0) {\n for (var j = 0; j < listNodes.length; j++) {\n var prevSibling = listNodes[j].previousSibling;\n if (prevSibling && prevSibling.tagName === 'LI') {\n prevSibling.appendChild(listNodes[j]);\n }\n }\n }\n }\n };\n Lists.prototype.noPreviousElement = function (elements) {\n var firstNode;\n var firstNodeOL;\n var siblingListOL = elements.querySelectorAll('ol, ul');\n var siblingListLI = elements\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNode = siblingListLI[0];\n }\n else {\n firstNodeOL = siblingListOL[0];\n }\n if (firstNode) {\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNode);\n setStyleAttribute(elements, { 'list-style-type': 'none' });\n setStyleAttribute(firstNode, { 'list-style-type': '' });\n h = nextSibling;\n }\n }\n else if (firstNodeOL) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNodeOL);\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n prepend([firstNodeOL], elements.parentNode);\n detach(elements);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], firstNodeOL.parentNode);\n append([firstNodeOL], nestedElementLI);\n }\n else {\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], elements.parentNode);\n var nestedElement = createElement(elements.parentNode.tagName);\n prepend([nestedElement], nestedElementLI);\n append([elements], nestedElement);\n }\n };\n Lists.prototype.nestedList = function (elements) {\n var isNested = false;\n for (var i = 0; i < elements.length; i++) {\n var prevSibling = this.domNode.getPreviousNode(elements[i]);\n if (prevSibling) {\n isNested = true;\n var firstNode = void 0;\n var firstNodeLI = void 0;\n var siblingListOL = elements[i].querySelectorAll('ol, ul');\n var siblingListLI = elements[i]\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNodeLI = siblingListLI[0];\n }\n else {\n firstNode = siblingListOL[0];\n }\n if (firstNode) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNode);\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n append([firstNode], prevSibling);\n detach(elements[i]);\n }\n else if (firstNodeLI) {\n if (prevSibling.tagName === 'LI') {\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNodeLI);\n setStyleAttribute(elements[i], { 'list-style-type': 'none' });\n setStyleAttribute(firstNodeLI, { 'list-style-type': '' });\n h = nextSibling;\n }\n append([firstNodeLI.parentNode], prevSibling);\n detach(elements[i]);\n }\n }\n else {\n if (prevSibling.tagName === 'LI') {\n var nestedElement = createElement(elements[i].parentNode.tagName);\n append([nestedElement], prevSibling);\n append([elements[i]], nestedElement);\n }\n else if (prevSibling.tagName === 'OL' || prevSibling.tagName === 'UL') {\n append([elements[i]], prevSibling);\n }\n }\n }\n else {\n var element = elements[i];\n isNested = true;\n this.noPreviousElement(element);\n }\n }\n return isNested;\n };\n Lists.prototype.applyListsHandler = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement) {\n var startChildNodes = range.startContainer.childNodes;\n var startNode = ((startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) :\n range.startOffset]) || range.startContainer);\n var endNode = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) :\n range.endOffset] || range.endContainer);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var lastSelectionNode = endNode.lastChild.nodeName === 'BR' ? (isNOU(endNode.lastChild.previousSibling) ? endNode\n : endNode.lastChild.previousSibling) : endNode.lastChild;\n while (!isNOU(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, lastSelectionNode, 0, lastSelectionNode.textContent.length);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n }\n if (range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&\n range.startOffset === range.endOffset && range.startOffset === 0 &&\n this.parent.editableElement.textContent.length === 0 && (this.parent.editableElement.childNodes[0].nodeName !== 'TABLE' &&\n this.parent.editableElement.childNodes[0].nodeName !== 'IMG')) {\n var focusNode = range.startContainer.childNodes[0];\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, focusNode, focusNode, 0, 0);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n }\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.currentAction = e.subCommand;\n this.currentAction = e.subCommand = this.currentAction === 'NumberFormatList' ? 'OL' : this.currentAction === 'BulletFormatList' ? 'UL' : this.currentAction;\n this.domNode.setMarker(this.saveSelection);\n var listsNodes = this.domNode.blockNodes();\n if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(listsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('p');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNOU(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNOU(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNOU(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNOU(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n listsNodes = this.parent.domNode.blockNodes();\n }\n for (var i = 0; i < listsNodes.length; i++) {\n if (listsNodes[i].tagName === 'TABLE' && !range.collapsed) {\n listsNodes.splice(i, 1);\n }\n if (listsNodes.length > 0 && listsNodes[i].tagName !== 'LI'\n && 'LI' === listsNodes[i].parentNode.tagName) {\n listsNodes[i] = listsNodes[i].parentNode;\n }\n }\n this.applyLists(listsNodes, this.currentAction, e.selector, e.item, e);\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n event: e.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Lists.prototype.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNOU(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\n }\n };\n Lists.prototype.applyLists = function (elements, type, selector, item, e) {\n var isReverse = true;\n if (this.isRevert(elements, type, item) && isNOU(item)) {\n this.revertList(elements, e);\n this.removeEmptyListElements();\n }\n else {\n this.checkLists(elements, type, item);\n for (var i = 0; i < elements.length; i++) {\n if (!isNOU(item) && !isNOU(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(elements[i], { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(elements[i], { 'list-style-image': 'none' });\n setStyleAttribute(elements[i], { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n if (elements[i].getAttribute('contenteditable') === 'true'\n && elements[i].childNodes.length === 1 && elements[i].childNodes[0].nodeName === 'TABLE') {\n var listEle = document.createElement(type);\n listEle.innerHTML = '

  • ';\n elements[i].appendChild(listEle);\n }\n else if ('LI' !== elements[i].tagName && isNOU(item)) {\n isReverse = false;\n var elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n var openTag = '<' + type + '>';\n var closeTag = '';\n var newTag = 'li' + elemAtt;\n var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ?\n elements[i].innerHTML : elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n else if (!isNOU(item) && 'LI' !== elements[i].tagName) {\n // eslint-disable-next-line\n isReverse = false;\n var elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n var openTag = '<' + type + elemAtt + '>';\n var closeTag = '';\n var newTag = 'li';\n var replaceHTML = (elements[i].tagName.toLowerCase() === CONSTANT.DEFAULT_TAG ?\n elements[i].innerHTML : elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n }\n }\n this.cleanNode();\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, selector);\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n };\n Lists.prototype.removeEmptyListElements = function () {\n var listElem = this.parent.editableElement.querySelectorAll('ol, ul');\n for (var i = 0; i < listElem.length; i++) {\n if (listElem[i].textContent.trim() === '') {\n detach(listElem[i]);\n }\n }\n };\n Lists.prototype.isRevert = function (nodes, tagName, item) {\n var isRevert = true;\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].tagName !== 'LI') {\n return false;\n }\n if (nodes[i].parentNode.tagName !== tagName ||\n isNOU(item) && nodes[i].parentNode.style.listStyleType !== '') {\n isRevert = false;\n }\n }\n return isRevert;\n };\n Lists.prototype.checkLists = function (nodes, tagName, item) {\n var nodesTemp = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i].parentNode;\n if (!isNOU(item) && 'LI' === nodes[i].tagName && !isNOU(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(node, { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(node, { 'list-style-image': 'none' });\n setStyleAttribute(node, { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n if ((nodes[i].tagName === 'LI' && node.tagName !== tagName && nodesTemp.indexOf(node) < 0) ||\n (nodes[i].tagName === 'LI' && node.tagName === tagName && nodesTemp.indexOf(node) < 0 && item !== null)) {\n nodesTemp.push(node);\n }\n if (isNOU(item) && (node.tagName === tagName ||\n ((node.tagName === 'UL' || node.tagName === 'OL') && node.hasAttribute('style')))) {\n if (node.hasAttribute('style')) {\n node.removeAttribute('style');\n }\n }\n }\n for (var j = nodesTemp.length - 1; j >= 0; j--) {\n var h = nodesTemp[j];\n var replace = '<' + tagName.toLowerCase() + ' '\n + this.domNode.attributes(h) + '>' + h.innerHTML + '';\n this.domNode.replaceWith(nodesTemp[j], replace);\n }\n };\n Lists.prototype.cleanNode = function () {\n var liParents = this.parent.editableElement.querySelectorAll('ol + ol, ul + ul');\n for (var c = 0; c < liParents.length; c++) {\n var node = liParents[c];\n if (this.domNode.isList(node.previousElementSibling) &&\n this.domNode.openTagString(node) === this.domNode.openTagString(node.previousElementSibling)) {\n var contentNodes = this.domNode.contents(node);\n for (var f = 0; f < contentNodes.length; f++) {\n node.previousElementSibling.appendChild(contentNodes[f]);\n }\n node.parentNode.removeChild(node);\n }\n else if (!isNOU(node.getAttribute('level'))) {\n if (node.tagName === node.previousElementSibling.tagName) {\n node.previousElementSibling.lastChild.append(node);\n }\n }\n }\n };\n Lists.prototype.findUnSelected = function (temp, elements) {\n temp = temp.slice().reverse();\n if (temp.length > 0) {\n var rightIndent = [];\n var indentElements = [];\n var lastElement = elements[elements.length - 1];\n var lastElementChild = [];\n var childElements = [];\n lastElementChild = (lastElement.childNodes);\n for (var z = 0; z < lastElementChild.length; z++) {\n if (lastElementChild[z].tagName === 'OL' || lastElementChild[z].tagName === 'UL') {\n var childLI = lastElementChild[z]\n .querySelectorAll('li');\n if (childLI.length > 0) {\n for (var y = 0; y < childLI.length; y++) {\n childElements.push(childLI[y]);\n }\n }\n }\n }\n for (var i = 0; i < childElements.length; i++) {\n var count = 0;\n for (var j = 0; j < temp.length; j++) {\n if (!childElements[i].contains((temp[j]))) {\n count = count + 1;\n }\n }\n if (count === temp.length) {\n indentElements.push(childElements[i]);\n }\n }\n if (indentElements.length > 0) {\n for (var x = 0; x < indentElements.length; x++) {\n if (this.domNode.contents(indentElements[x])[0].nodeName !== 'OL' &&\n this.domNode.contents(indentElements[x])[0].nodeName !== 'UL') {\n rightIndent.push(indentElements[x]);\n }\n }\n }\n if (rightIndent.length > 0) {\n this.nestedList(rightIndent);\n }\n }\n };\n Lists.prototype.revertList = function (elements, e) {\n var temp = [];\n for (var i = elements.length - 1; i >= 0; i--) {\n for (var j = i - 1; j >= 0; j--) {\n if (elements[j].contains((elements[i])) || elements[j] === elements[i]) {\n temp.push(elements[i]);\n elements.splice(i, 1);\n break;\n }\n }\n }\n this.findUnSelected(temp, elements);\n var viewNode = [];\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {\n detach(this.domNode.contents(element)[0]);\n }\n var parentNode = elements[i].parentNode;\n var className = element.getAttribute('class');\n if (temp.length === 0) {\n var siblingList = elements[i].querySelectorAll('ul, ol');\n var firstNode = siblingList[0];\n if (firstNode) {\n var child = firstNode\n .querySelectorAll('li');\n if (child) {\n var nestedElement = createElement(firstNode.tagName);\n append([nestedElement], firstNode.parentNode);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n append([nestedElementLI], nestedElement);\n append([firstNode], nestedElementLI);\n }\n }\n }\n if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element),\n 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||\n 'UL' === parentNode.parentNode.tagName) {\n element.parentNode.insertBefore(this.closeTag('LI'), element);\n }\n else {\n var classAttr = '';\n if (className) {\n // eslint-disable-next-line\n classAttr += ' class=\"' + className + '\"';\n }\n if (CONSTANT.DEFAULT_TAG && 0 === element.querySelectorAll(CONSTANT.BLOCK_TAGS.join(', ')).length) {\n var wrapperclass = isNullOrUndefined(className) ? ' class=\"e-rte-wrap-inner\"' :\n ' class=\"' + className + ' e-rte-wrap-inner\"';\n var wrapper = '<' + CONSTANT.DEFAULT_TAG + wrapperclass +\n this.domNode.attributes(parentNode) + '>';\n if (e.enterAction !== 'BR') {\n this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));\n }\n }\n else if (this.domNode.contents(element)[0].nodeType === 3) {\n var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||\n this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {\n var replace = this.domNode.createTagString(CONSTANT.DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else {\n var childNode = element.firstChild;\n className = childNode.getAttribute('class');\n attributes(childNode, this.domNode.rawAttributes(parentNode));\n if (className && childNode.getAttribute('class')) {\n attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });\n }\n }\n append([this.openTag('LI')], element);\n prepend([this.closeTag('LI')], element);\n }\n this.domNode.insertAfter(this.openTag(parentNode.tagName), element);\n if (parentNode.parentNode.tagName === 'LI') {\n parentNode = parentNode.parentNode.parentNode;\n }\n if (viewNode.indexOf(parentNode) < 0) {\n viewNode.push(parentNode);\n }\n }\n for (var i = 0; i < viewNode.length; i++) {\n var node = viewNode[i];\n var nodeInnerHtml = node.innerHTML;\n var closeTag = /<\\/span>/g;\n var openTag = /<\\/span>/g;\n nodeInnerHtml = nodeInnerHtml.replace(closeTag, '');\n nodeInnerHtml = nodeInnerHtml.replace(openTag, '<$1 ' + this.domNode.attributes(node) + '>');\n this.domNode.replaceWith(node, this.domNode.openTagString(node) + nodeInnerHtml.trim() + this.domNode.closeTagString(node));\n }\n var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');\n for (var i = 0; i < emptyUl.length; i++) {\n detach(emptyUl[i]);\n }\n var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');\n for (var i = 0; i < emptyLi.length; i++) {\n detach(emptyLi[i]);\n }\n };\n Lists.prototype.openTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n Lists.prototype.closeTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n return Lists;\n}());\nexport { Lists };\n","/**\n * Node appending methods.\n *\n * @hidden\n */\nvar InsertMethods = /** @class */ (function () {\n function InsertMethods() {\n }\n /**\n * WrapBefore method\n *\n * @param {Text} textNode - specifies the text node\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {Text} - returns the text value\n * @hidden\n\n */\n InsertMethods.WrapBefore = function (textNode, parentNode, isAfter) {\n parentNode.innerText = textNode.textContent;\n //eslint-disable-next-line\n (!isAfter) ? this.AppendBefore(parentNode, textNode) : this.AppendBefore(parentNode, textNode, true);\n if (textNode.parentNode) {\n textNode.parentNode.removeChild(textNode);\n }\n return parentNode.childNodes[0];\n };\n /**\n * Wrap method\n *\n * @param {HTMLElement} childNode - specifies the child node\n * @param {HTMLElement} parentNode - specifies the parent node.\n * @returns {HTMLElement} - returns the element\n * @hidden\n\n */\n InsertMethods.Wrap = function (childNode, parentNode) {\n this.AppendBefore(parentNode, childNode);\n parentNode.appendChild(childNode);\n return childNode;\n };\n /**\n * unwrap method\n *\n * @param {Node} node - specifies the node element.\n * @returns {Node[]} - returns the array of value\n * @hidden\n\n */\n InsertMethods.unwrap = function (node) {\n var parent = node.parentNode;\n var child = [];\n for (; node.firstChild; null) {\n child.push(parent.insertBefore(node.firstChild, node));\n }\n parent.removeChild(node);\n return child;\n };\n /**\n * AppendBefore method\n *\n * @param {HTMLElement} textNode - specifies the element\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {void}\n * @hidden\n\n */\n InsertMethods.AppendBefore = function (textNode, parentNode, isAfter) {\n return (parentNode.parentNode) ? ((!isAfter) ? parentNode.parentNode.insertBefore(textNode, parentNode)\n : parentNode.parentNode.insertBefore(textNode, parentNode.nextSibling)) :\n parentNode;\n };\n return InsertMethods;\n}());\nexport { InsertMethods };\n","import { NodeSelection } from './../../selection/index';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { InsertMethods } from './insert-methods';\n/**\n * Split the Node based on selection\n *\n * @hidden\n\n */\nvar NodeCutter = /** @class */ (function () {\n function NodeCutter() {\n this.enterAction = 'P';\n this.position = -1;\n this.nodeSelection = new NodeSelection();\n }\n // Split Selection Node\n /**\n * GetSpliceNode method\n *\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @returns {Node} - returns the node value\n * @hidden\n\n */\n NodeCutter.prototype.GetSpliceNode = function (range, node) {\n node = this.SplitNode(range, node, true);\n node = this.SplitNode(range, node, false);\n return node;\n };\n /**\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @param {boolean} isCollapsed - specifies the boolean value\n * @returns {HTMLElement} - returns the element\n * @hidden\n\n */\n NodeCutter.prototype.SplitNode = function (range, node, isCollapsed) {\n if (node) {\n var clone = range.cloneRange();\n var parent_1 = node.parentNode;\n var index = this.nodeSelection.getIndex(node);\n clone.collapse(isCollapsed);\n // eslint-disable-next-line\n (isCollapsed) ? clone.setStartBefore(node) : clone.setEndAfter(node);\n var fragment = clone.extractContents();\n if (isCollapsed) {\n node = parent_1.childNodes[index];\n fragment = this.spliceEmptyNode(fragment, false);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'\n && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n node = divNode.firstChild;\n parent_1.appendChild(node);\n }\n }\n }\n }\n else {\n node = parent_1.childNodes.length > 1 ? parent_1.childNodes[index] :\n parent_1.childNodes[0];\n fragment = this.spliceEmptyNode(fragment, true);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'\n && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node, true);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n parent_1.insertBefore(divNode.firstChild, parent_1.firstChild);\n node = parent_1.firstChild;\n }\n }\n }\n }\n return node;\n }\n else {\n return null;\n }\n };\n NodeCutter.prototype.isRteElm = function (fragment) {\n var result = true;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG') {\n var firstChild = fragment.childNodes[0];\n for (var i = 0; !isNOU(firstChild.childNodes) && i < firstChild.childNodes.length; i++) {\n if (firstChild.childNodes[i].nodeName === 'IMG' || (firstChild.childNodes[i].nodeName === 'SPAN' &&\n (firstChild.childNodes[i].classList.contains('e-video-wrap') ||\n firstChild.childNodes[i].classList.contains('e-embed-video-wrap') ||\n firstChild.childNodes[i].classList.contains('e-audio-wrap')))) {\n result = false;\n }\n }\n }\n else {\n result = true;\n }\n return result;\n };\n NodeCutter.prototype.spliceEmptyNode = function (fragment, isStart) {\n var len;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName === '#text' &&\n fragment.childNodes[0].textContent === '' || fragment.textContent === '') {\n len = -1;\n }\n else {\n len = fragment.childNodes.length - 1;\n }\n if (len > -1 && !isStart) {\n this.spliceEmptyNode(fragment.childNodes[len], isStart);\n }\n else if (len > -1) {\n this.spliceEmptyNode(fragment.childNodes[0], isStart);\n }\n else if (fragment.nodeType !== 3 && fragment.nodeType !== 11 && fragment.nodeName !== 'IMG' && !(fragment.classList.contains('e-video-wrap')) && !(fragment.classList.contains('e-audio-wrap'))) {\n fragment.parentNode.removeChild(fragment);\n }\n return fragment;\n };\n // Cursor Position split\n NodeCutter.prototype.GetCursorStart = function (indexes, index, isStart) {\n indexes = (isStart) ? indexes : indexes.reverse();\n var position = indexes[0];\n for (var num = 0; num < indexes.length && ((isStart) ? (indexes[num] < index) : (indexes[num] >= index)); num++) {\n position = indexes[num];\n }\n return position;\n };\n /**\n * GetCursorRange method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Range} - returns the range value\n * @hidden\n\n */\n NodeCutter.prototype.GetCursorRange = function (docElement, range, node) {\n var cursorRange = docElement.createRange();\n var indexes = [];\n indexes.push(0);\n var str = this.TrimLineBreak(node.data);\n var index = str.indexOf(' ', 0);\n while (index !== -1) {\n if (indexes.indexOf(index) < 0) {\n indexes.push(index);\n }\n if (new RegExp('\\\\s').test(str[index - 1]) && (indexes.indexOf(index - 1) < 0)) {\n indexes.push(index - 1);\n }\n if (new RegExp('\\\\s').test(str[index + 1])) {\n indexes.push(index + 1);\n }\n index = str.indexOf(' ', (index + 1));\n }\n indexes.push(str.length);\n if ((indexes.indexOf(range.startOffset) >= 0)\n || ((indexes.indexOf(range.startOffset - 1) >= 0) && (range.startOffset !== 1\n || (range.startOffset === 1 && new RegExp('\\\\s').test(str[0])))\n || ((indexes[indexes.length - 1] - 1) === range.startOffset))) {\n cursorRange = range;\n this.position = 1;\n }\n else {\n var startOffset = this.GetCursorStart(indexes, range.startOffset, true);\n this.position = range.startOffset - startOffset;\n cursorRange.setStart(range.startContainer, startOffset);\n cursorRange.setEnd(range.startContainer, this.GetCursorStart(indexes, range.startOffset, false));\n }\n return cursorRange;\n };\n /**\n * GetCursorNode method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Node} - returns the node value\n * @hidden\n\n */\n NodeCutter.prototype.GetCursorNode = function (docElement, range, node) {\n return this.GetSpliceNode(this.GetCursorRange(docElement, range, node), node);\n };\n /**\n * TrimLineBreak method\n *\n * @param {string} line - specifies the string value.\n * @returns {string} - returns the string\n * @hidden\n\n */\n NodeCutter.prototype.TrimLineBreak = function (line) {\n return line.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n };\n return NodeCutter;\n}());\nexport { NodeCutter };\n","import * as EVENTS from './../../common/constant';\nimport { isNullOrUndefined as isNOU, detach, createElement, closest } from '@syncfusion/ej2-base';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { markerClassName } from './dom-node';\nimport { NodeCutter } from './nodecutter';\n/**\n * Formats internal component\n *\n * @hidden\n\n */\nvar Formats = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @hidden\n\n */\n function Formats(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n Formats.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.FORMAT_TYPE, this.applyFormats, this);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, this.onKeyUp, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Formats.prototype.getParentNode = function (node) {\n for (; node.parentNode && node.parentNode !== this.parent.editableElement; null) {\n node = node.parentNode;\n }\n return node;\n };\n Formats.prototype.onKeyUp = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var endCon = range.endContainer;\n var lastChild = endCon.lastChild;\n if (e.event.which === 13 && range.startContainer === endCon && endCon.nodeType !== 3) {\n var pTag = createElement('p');\n pTag.innerHTML = '
    ';\n if (!isNOU(lastChild) && lastChild && lastChild.nodeName === 'BR' && (lastChild.previousSibling && lastChild.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, lastChild);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n else {\n var brNode = this.parent.nodeSelection.getSelectionNodeCollectionBr(range)[0];\n if (!isNOU(brNode) && brNode.nodeName === 'BR' && (brNode.previousSibling && brNode.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, brNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n }\n }\n };\n Formats.prototype.onKeyDown = function (e) {\n if (e.event.which === 13) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startCon = (range.startContainer.textContent.length === 0 || range.startContainer.nodeName === 'PRE')\n ? range.startContainer : range.startContainer.parentElement;\n var endCon = (range.endContainer.textContent.length === 0 || range.endContainer.nodeName === 'PRE')\n ? range.endContainer : range.endContainer.parentElement;\n var preElem = closest(startCon, 'pre');\n var endPreElem = closest(endCon, 'pre');\n var liParent = !isNOU(preElem) && !isNOU(preElem.parentElement) && preElem.parentElement.tagName === 'LI';\n if (liParent) {\n return;\n }\n if (((isNOU(preElem) && !isNOU(endPreElem)) || (!isNOU(preElem) && isNOU(endPreElem)))) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, endCon, 0);\n }\n if (e.event.which === 13 && !isNOU(preElem) && !isNOU(endPreElem)) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var lastEmpty = range.startContainer.childNodes[range.endOffset];\n var lastBeforeBr = range.startContainer.childNodes[range.endOffset - 1];\n var startParent = range.startContainer;\n if (!isNOU(lastEmpty) && !isNOU(lastBeforeBr) && isNOU(lastEmpty.nextSibling) &&\n lastEmpty.nodeName === 'BR' && lastBeforeBr.nodeName === 'BR') {\n this.paraFocus(range.startContainer, e.enterAction);\n }\n else if ((startParent.textContent.charCodeAt(0) === 8203 &&\n startParent.textContent.length === 1) || startParent.textContent.length === 0) {\n //Double enter with any parent tag for the node\n while (startParent.parentElement.nodeName !== 'PRE' &&\n (startParent.textContent.length === 1 || startParent.textContent.length === 0)) {\n startParent = startParent.parentElement;\n }\n if (!isNOU(startParent.previousSibling) && startParent.previousSibling.nodeName === 'BR' &&\n isNOU(startParent.nextSibling)) {\n this.paraFocus(startParent.parentElement);\n }\n else {\n this.isNotEndCursor(preElem, range);\n }\n }\n else {\n //Cursor at start and middle\n this.isNotEndCursor(preElem, range);\n }\n }\n }\n };\n Formats.prototype.removeCodeContent = function (range) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(65279), 'g');\n if (!isNOU(range.endContainer.textContent.match(regEx))) {\n var pointer = range.endContainer.textContent.charCodeAt(range.endOffset - 1) === 65279 ?\n range.endOffset - 2 : range.endOffset;\n range.endContainer.textContent = range.endContainer.textContent.replace(regEx, '');\n if (range.endContainer.textContent === '') {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer.parentElement, 0);\n }\n else {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer, pointer);\n }\n }\n };\n Formats.prototype.deleteContent = function (range) {\n if (range.startContainer !== range.endContainer || range.startOffset !== range.endOffset) {\n range.deleteContents();\n }\n };\n Formats.prototype.paraFocus = function (referNode, enterAction) {\n var insertTag;\n if (enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
    ';\n }\n else if (enterAction === 'BR') {\n insertTag = createElement('br');\n }\n else {\n insertTag = createElement('p');\n insertTag.innerHTML = '
    ';\n }\n this.parent.domNode.insertAfter(insertTag, referNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 0);\n detach(referNode.lastChild);\n };\n Formats.prototype.isNotEndCursor = function (preElem, range) {\n var nodeCutter = new NodeCutter();\n var isEnd = range.startOffset === preElem.lastChild.textContent.length &&\n preElem.lastChild.textContent === range.startContainer.textContent;\n //Cursor at start point\n if (preElem.textContent.indexOf(range.startContainer.textContent) === 0 &&\n ((range.startOffset === 0 && range.endOffset === 0) || range.startContainer.nodeName === 'PRE')) {\n this.insertMarker(preElem, range);\n var brTag = createElement('br');\n preElem.childNodes[range.endOffset].parentElement.insertBefore(brTag, preElem.childNodes[range.endOffset]);\n }\n else {\n //Cursor at middle\n var cloneNode = nodeCutter.SplitNode(range, preElem, true);\n this.insertMarker(preElem, range);\n var previousSib = preElem.previousElementSibling;\n if (previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
    ' + cloneNode.innerHTML);\n detach(preElem);\n }\n }\n //To place the cursor position\n this.setCursorPosition(isEnd, preElem);\n };\n Formats.prototype.setCursorPosition = function (isEnd, preElem) {\n var isEmpty = false;\n var markerElem = this.parent.editableElement.querySelector('.tempSpan');\n var mrkParentElem = markerElem.parentElement;\n // eslint-disable-next-line\n markerElem.parentNode.textContent === '' ? isEmpty = true :\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n if (isEnd) {\n if (isEmpty) {\n //Enter press when pre element is empty\n if (mrkParentElem === preElem) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n else {\n this.focusSelectionParent(markerElem, mrkParentElem);\n }\n }\n else {\n var brElm = createElement('br');\n this.parent.domNode.insertAfter(brElm, markerElem);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n }\n else {\n // eslint-disable-next-line\n isEmpty ? this.focusSelectionParent(markerElem, mrkParentElem) : detach(markerElem);\n }\n };\n Formats.prototype.focusSelectionParent = function (markerElem, tempSpanPElem) {\n detach(markerElem);\n tempSpanPElem.innerHTML = '\\u200B';\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, tempSpanPElem, 0);\n };\n Formats.prototype.insertMarker = function (preElem, range) {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n if (range.startContainer.nodeName === 'PRE') {\n preElem.childNodes[range.endOffset].parentElement.insertBefore(tempSpan, preElem.childNodes[range.endOffset]);\n }\n else {\n range.startContainer.parentElement.insertBefore(tempSpan, range.startContainer);\n }\n };\n Formats.prototype.applyFormats = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var isSelectAll = false;\n if (this.parent.editableElement === range.endContainer &&\n !isNOU(this.parent.editableElement.children[range.endOffset - 1]) &&\n this.parent.editableElement.children[range.endOffset - 1].tagName === 'TABLE' && !range.collapsed) {\n isSelectAll = true;\n }\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var formatsNodes = this.parent.domNode.blockNodes();\n if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(formatsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('div');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNOU(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNOU(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNOU(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNOU(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n formatsNodes = this.parent.domNode.blockNodes();\n }\n for (var i = 0; i < formatsNodes.length; i++) {\n var parentNode = void 0;\n var replaceHTML = void 0;\n if (e.subCommand.toLowerCase() === 'blockquote') {\n parentNode = this.getParentNode(formatsNodes[i]);\n replaceHTML = this.parent.domNode.isList(parentNode) ||\n parentNode.tagName === 'TABLE' ? parentNode.outerHTML : parentNode.innerHTML;\n }\n else {\n parentNode = formatsNodes[i];\n replaceHTML = parentNode.innerHTML;\n }\n if ((e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase() &&\n (e.subCommand.toLowerCase() !== 'pre' ||\n (!isNOU(e.exeValue) && e.exeValue.name === 'dropDownSelect'))) ||\n isNOU(parentNode.parentNode) ||\n (parentNode.tagName === 'TABLE' && e.subCommand.toLowerCase() === 'pre')) {\n continue;\n }\n this.cleanFormats(parentNode, e.subCommand);\n var replaceNode = (e.subCommand.toLowerCase() === 'pre' && parentNode.tagName.toLowerCase() === 'pre') ?\n 'p' : e.subCommand;\n var replaceTag = this.parent.domNode.createTagString(replaceNode, parentNode, replaceHTML.replace(/>\\s+<'));\n if (parentNode.tagName === 'LI') {\n parentNode.innerHTML = '';\n parentNode.insertAdjacentHTML('beforeend', replaceTag);\n }\n else {\n this.parent.domNode.replaceWith(parentNode, replaceTag);\n }\n }\n this.preFormatMerge();\n var startNode = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endNode = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (!isNOU(startNode) && !isNOU(endNode)) {\n startNode = startNode.lastChild;\n endNode = endNode.lastChild;\n }\n save = this.parent.domNode.saveMarker(save, null);\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n if (isSelectAll) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, endNode, 0, endNode.textContent.length);\n }\n else {\n save.restore();\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Formats.prototype.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNOU(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\n }\n };\n Formats.prototype.preFormatMerge = function () {\n var preNodes = this.parent.editableElement.querySelectorAll('PRE');\n if (!isNOU(preNodes)) {\n for (var i = 0; i < preNodes.length; i++) {\n var previousSib = preNodes[i].previousElementSibling;\n if (!isNOU(previousSib) && previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
    ' + preNodes[i].innerHTML);\n detach(preNodes[i]);\n }\n }\n }\n };\n Formats.prototype.cleanFormats = function (element, tagName) {\n var ignoreAttr = ['display', 'font-size', 'margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'font-weight'];\n tagName = tagName.toLowerCase();\n for (var i = 0; i < ignoreAttr.length && (tagName !== 'p' && tagName !== 'blockquote' && tagName !== 'pre'); i++) {\n element.style.removeProperty(ignoreAttr[i]);\n }\n };\n return Formats;\n}());\nexport { Formats };\n","import { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport * as CONSTANT from './../base/constant';\nimport { detach, Browser, isNullOrUndefined as isNOU, createElement, closest } from '@syncfusion/ej2-base';\nimport { InsertMethods } from './insert-methods';\nimport { updateTextNode } from './../../common/util';\n/**\n * Insert a HTML Node or Text\n *\n * @hidden\n\n */\nvar InsertHtml = /** @class */ (function () {\n function InsertHtml() {\n }\n InsertHtml.Insert = function (docElement, insertNode, editNode, isExternal, enterAction) {\n var node;\n if (typeof insertNode === 'string') {\n var divNode = document.createElement('div');\n divNode.innerHTML = insertNode;\n node = isExternal ? divNode : divNode.firstChild;\n }\n else {\n if (isExternal && !(!isNOU(insertNode) && !isNOU(insertNode.classList) &&\n insertNode.classList.contains('pasteContent'))) {\n var divNode = document.createElement('div');\n divNode.appendChild(insertNode);\n node = divNode;\n }\n else {\n node = insertNode;\n }\n }\n var nodeSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = nodeSelection.getRange(docElement);\n if (range.startContainer === editNode && range.startContainer === range.endContainer && range.startOffset === 0 &&\n range.startOffset === range.endOffset && editNode.textContent.length === 0 &&\n (editNode.children[0].tagName === 'P' || (editNode.children[0].tagName === 'BR'))) {\n nodeSelection.setSelectionText(docElement, range.startContainer.children[0], range.startContainer.children[0], 0, 0);\n range = nodeSelection.getRange(docElement);\n }\n if (range.startContainer.nodeName === 'BR' && range.startOffset === 0 && range.startOffset === range.endOffset &&\n range.startContainer === range.endContainer) {\n var currentIndex = Array.prototype.slice.call(range.startContainer.parentElement.childNodes).indexOf(range.startContainer);\n nodeSelection.setSelectionText(docElement, range.startContainer.parentElement, range.startContainer.parentElement, currentIndex, currentIndex);\n range = nodeSelection.getRange(docElement);\n }\n var isCursor = range.startOffset === range.endOffset && range.startOffset === 0 &&\n range.startContainer === range.endContainer;\n var isCollapsed = range.collapsed;\n var nodes = this.getNodeCollection(range, nodeSelection, node);\n var closestParentNode = (node.nodeName.toLowerCase() === 'table') ? this.closestEle(nodes[0].parentNode, editNode) : nodes[0];\n if (isExternal || (!isNOU(node) && !isNOU(node.classList) &&\n node.classList.contains('pasteContent'))) {\n this.pasteInsertHTML(nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode, enterAction);\n return;\n }\n if (editNode !== range.startContainer && ((!isCollapsed && !(closestParentNode.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))\n || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {\n var preNode = nodeCutter.GetSpliceNode(range, closestParentNode);\n var sibNode = preNode.previousSibling;\n var parentNode = preNode.parentNode;\n if (nodes.length === 1 || (node.nodeName.toLowerCase() === 'table' && preNode.childElementCount === 0)) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n }\n else {\n var lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNOU(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n }\n range.extractContents();\n if (insertNode.tagName === 'TABLE') {\n this.removeEmptyElements(editNode);\n }\n for (var index = 0; index < nodes.length; index++) {\n if (nodes[index].nodeType !== 3 && nodes[index].parentNode != null) {\n if (nodes[index].nodeName === 'IMG') {\n continue;\n }\n nodes[index].parentNode.removeChild(nodes[index]);\n }\n }\n if (sibNode) {\n InsertMethods.AppendBefore(node, sibNode, true);\n }\n else {\n var previousNode = null;\n while (parentNode !== editNode && parentNode.firstChild &&\n (parentNode.textContent.trim() === '')) {\n var parentNode1 = parentNode.parentNode;\n previousNode = parentNode;\n parentNode = parentNode1;\n }\n if (previousNode !== null) {\n parentNode = previousNode;\n }\n if (parentNode.firstChild && (parentNode !== editNode ||\n (node.nodeName === 'TABLE' && isCursor && parentNode === range.startContainer &&\n parentNode === range.endContainer))) {\n if (parentNode.textContent.trim() === '' && parentNode !== editNode) {\n InsertMethods.AppendBefore(node, parentNode, false);\n detach(parentNode);\n }\n else {\n InsertMethods.AppendBefore(node, parentNode.firstChild, false);\n }\n }\n else {\n parentNode.appendChild(node);\n }\n }\n if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.childNodes.length);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.textContent.length);\n }\n }\n else {\n range.deleteContents();\n if (isCursor && range.startContainer.textContent === '' && range.startContainer.nodeName !== 'BR') {\n range.startContainer.innerHTML = '';\n }\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(node);\n range.insertNode(frag);\n }\n else if (range.startContainer.nodeType === 1 && range.startContainer.nodeName.toLowerCase() === 'hr'\n && range.endContainer.nodeName.toLowerCase() === 'hr') {\n var paraElem = range.startContainer.nextElementSibling;\n if (paraElem) {\n if (paraElem.querySelector('br')) {\n detach(paraElem.querySelector('br'));\n }\n paraElem.appendChild(node);\n }\n }\n else {\n if (range.startContainer.nodeName === 'BR') {\n range.startContainer.parentElement.insertBefore(node, range.startContainer);\n }\n else {\n range.insertNode(node);\n }\n }\n if (node.nodeType !== 3 && node.childNodes.length > 0) {\n nodeSelection.setSelectionText(docElement, node, node, 1, 1);\n }\n else if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionContents(docElement, node);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, node.textContent.length, node.textContent.length);\n }\n }\n };\n InsertHtml.pasteInsertHTML = function (nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode, enterAction) {\n var isCursor = range.startOffset === range.endOffset &&\n range.startContainer === range.endContainer;\n if (isCursor && range.startContainer === editNode && editNode.textContent === '') {\n var currentBlockNode = this.getImmediateBlockNode(nodes[nodes.length - 1], editNode);\n nodeSelection.setSelectionText(docElement, currentBlockNode, currentBlockNode, 0, 0);\n range = nodeSelection.getRange(docElement);\n }\n var lasNode;\n var sibNode;\n var isSingleNode;\n var preNode;\n if (editNode !== range.startContainer && ((!isCollapsed && !(closestParentNode.nodeType === Node.ELEMENT_NODE &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))\n || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&\n CONSTANT.TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {\n preNode = nodeCutter.GetSpliceNode(range, closestParentNode);\n sibNode = isNOU(preNode.previousSibling) ? preNode.parentNode.previousSibling : preNode.previousSibling;\n if (nodes.length === 1) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n isSingleNode = true;\n }\n else {\n lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNOU(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n isSingleNode = false;\n }\n }\n var containsBlockNode = false;\n this.removingComments(node);\n var allChildNodes = node.childNodes;\n for (var i = 0; i < allChildNodes.length; i++) {\n if (CONSTANT.BLOCK_TAGS.indexOf(allChildNodes[i].nodeName.toLocaleLowerCase()) >= 0) {\n containsBlockNode = true;\n break;\n }\n }\n var lastSelectionNode;\n var fragment = document.createDocumentFragment();\n if (!containsBlockNode) {\n if (!isCursor) {\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n if (isSingleNode) {\n preNode.parentNode.replaceChild(fragment, preNode);\n }\n else {\n range.deleteContents();\n if (!isNOU(lasNode)) {\n detach(lasNode);\n }\n // eslint-disable-next-line\n !isNOU(sibNode) ? sibNode.parentNode.appendChild(fragment) : editNode.appendChild(fragment);\n }\n }\n else {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n var nearestAnchor = closest(range.startContainer.parentElement, 'a');\n if (range.startContainer.nodeType === 3 && nearestAnchor && closest(nearestAnchor, 'span')) {\n var immediateBlockNode = this.getImmediateBlockNode(range.startContainer, editNode);\n if (immediateBlockNode.querySelectorAll('br').length > 0) {\n detach(immediateBlockNode.querySelector('br'));\n }\n var rangeElement = closest(nearestAnchor, 'span');\n rangeElement.appendChild(tempSpan);\n }\n else {\n range.insertNode(tempSpan);\n }\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n tempSpan.parentNode.replaceChild(fragment, tempSpan);\n }\n }\n else {\n var parentElem = range.startContainer;\n while (!isNOU(parentElem) && parentElem.nodeName !== 'PRE' && parentElem !== editNode) {\n parentElem = parentElem.parentElement;\n }\n if (!isNOU(node) && !isNOU(parentElem) && parentElem.nodeName === 'PRE') {\n range.insertNode(node);\n lastSelectionNode = node.lastChild;\n }\n else {\n this.insertTempNode(range, node, nodes, nodeCutter, editNode);\n var isFirstTextNode = true;\n var isPreviousInlineElem = void 0;\n var paraElm = void 0;\n var previousParent = void 0;\n if (!this.contentsDeleted) {\n range.deleteContents();\n }\n while (node.firstChild) {\n if (node.firstChild.nodeName === '#text' && node.firstChild.textContent.trim() === '') {\n detach(node.firstChild);\n continue;\n }\n if (node.firstChild.nodeName === '#text' && isFirstTextNode ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0 && isFirstTextNode)) {\n lastSelectionNode = node.firstChild;\n if (isNOU(node.previousElementSibling)) {\n var firstParaElm = createElement('p');\n node.parentElement.insertBefore(firstParaElm, node);\n }\n if (node.previousElementSibling.nodeName === 'BR') {\n node.parentElement.insertBefore(node.firstChild, node);\n }\n else {\n node.previousElementSibling.appendChild(node.firstChild);\n }\n }\n else {\n lastSelectionNode = node.firstChild;\n if (node.firstChild.nodeName === '#text' ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0)) {\n if (!isPreviousInlineElem) {\n paraElm = createElement('p');\n paraElm.appendChild(node.firstChild);\n fragment.appendChild(paraElm);\n }\n else {\n previousParent.appendChild(node.firstChild);\n fragment.appendChild(previousParent);\n }\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n else {\n fragment.appendChild(node.firstChild);\n isPreviousInlineElem = false;\n }\n isFirstTextNode = false;\n }\n }\n node.parentNode.replaceChild(fragment, node);\n }\n }\n if (lastSelectionNode.nodeName === '#text') {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n }\n else {\n this.cursorPos(lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction);\n }\n };\n InsertHtml.placeCursorEnd = function (lastSelectionNode, node, nodeSelection, docElement, editNode) {\n lastSelectionNode = lastSelectionNode.nodeName === 'BR' ? (isNOU(lastSelectionNode.previousSibling) ? lastSelectionNode.parentNode\n : lastSelectionNode.previousSibling) : lastSelectionNode;\n while (!isNOU(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n lastSelectionNode = isNOU(lastSelectionNode) ? node : lastSelectionNode;\n if (lastSelectionNode.nodeName === 'IMG') {\n this.imageFocus(lastSelectionNode, nodeSelection, docElement);\n }\n else {\n nodeSelection.setSelectionText(docElement, lastSelectionNode, lastSelectionNode, lastSelectionNode.textContent.length, lastSelectionNode.textContent.length);\n }\n this.removeEmptyElements(editNode);\n };\n InsertHtml.getNodeCollection = function (range, nodeSelection, node) {\n var nodes = [];\n if (range.startOffset === range.endOffset && range.startContainer === range.endContainer &&\n range.startContainer.nodeName !== 'BR' && range.startContainer.childNodes.length > 0 &&\n (range.startContainer.nodeName === 'TD' || (range.startContainer.nodeType !== 3 &&\n node.classList && node.classList.contains('pasteContent')))) {\n nodes.push(range.startContainer.childNodes[range.endOffset]);\n }\n else {\n nodes = nodeSelection.getInsertNodeCollection(range);\n }\n return nodes;\n };\n InsertHtml.insertTempNode = function (range, node, nodes, nodeCutter, editNode) {\n if (range.startContainer === editNode && !isNOU(range.startContainer.childNodes[range.endOffset - 1]) &&\n range.startContainer.childNodes[range.endOffset - 1].nodeName === 'TABLE') {\n if (isNOU(range.startContainer.childNodes[range.endOffset - 1].nextSibling)) {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset - 1].nextSibling);\n }\n }\n else if (range.startContainer === editNode && !isNOU(range.startContainer.childNodes[range.endOffset]) &&\n range.startContainer.childNodes[range.endOffset].nodeName === 'TABLE') {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset]);\n }\n else if (range.startContainer === range.endContainer && range.startContainer.nodeType !== 3\n && node.firstChild.nodeName === 'HR') {\n if (range.startContainer.classList.contains('e-content') || range.startContainer.nodeName === 'BODY') {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.parentNode.insertBefore(node, range.startContainer);\n }\n }\n else {\n var blockNode = this.getImmediateBlockNode(nodes[nodes.length - 1], editNode);\n if ((isNOU(blockNode) || isNOU(blockNode.parentElement)) && range.endContainer.nodeType !== 3) {\n blockNode = range.endContainer;\n range.setEnd(blockNode, range.endContainer.textContent.length);\n }\n if (blockNode.nodeName === 'BODY' && range.startContainer === range.endContainer && range.startContainer.nodeType === 1) {\n blockNode = range.startContainer;\n }\n if (blockNode.closest('LI') && node && node.firstElementChild &&\n ((node).firstElementChild.tagName === 'OL' || node.firstElementChild.tagName === 'UL')) {\n var liNode = void 0;\n while (node.firstElementChild.lastElementChild && node.firstElementChild.lastElementChild.tagName === 'LI') {\n liNode = node.firstElementChild.lastElementChild;\n liNode.style.removeProperty('margin-left');\n liNode.style.removeProperty('margin-top');\n liNode.style.removeProperty('margin-bottom');\n node.firstElementChild.insertAdjacentElement('afterend', liNode);\n }\n }\n if (blockNode.nodeName === 'TD' || blockNode.nodeName === 'TH' || blockNode.nodeName === 'TR') {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n range.insertNode(tempSpan);\n tempSpan.parentNode.replaceChild(node, tempSpan);\n }\n else {\n var nodeSelection = new NodeSelection();\n var currentNode = this.getNodeCollection(range, nodeSelection, node)[this.getNodeCollection(range, nodeSelection, node).length - 1];\n var splitedElm = void 0;\n if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR' ||\n (currentNode.nodeName === '#text' && !isNOU(currentNode.parentElement) && currentNode.parentElement.nodeName === 'LI')) &&\n (!isNOU(currentNode.parentElement) && currentNode.parentElement.textContent.trim().length === 0)) {\n splitedElm = currentNode;\n if (currentNode.parentElement.nodeName === 'LI' && !isNOU(currentNode.nextSibling) &&\n currentNode.nextSibling.nodeName === 'BR') {\n detach(currentNode.nextSibling);\n }\n }\n else if ((currentNode.nodeName === '#text' || currentNode.nodeName === 'BR') && !isNOU(currentNode.parentElement) &&\n (currentNode.parentElement.nodeName === 'LI' || (blockNode === editNode && currentNode.parentElement === blockNode)) &&\n currentNode.parentElement.textContent.trim().length > 0) {\n splitedElm = currentNode;\n if (currentNode.parentElement.nodeName === 'LI' && !isNOU(currentNode.nextSibling) &&\n currentNode.nextSibling.nodeName === 'BR') {\n detach(currentNode.nextSibling);\n }\n if (!range.collapsed) {\n range.deleteContents();\n }\n range.insertNode(node);\n this.contentsDeleted = true;\n return;\n }\n else {\n splitedElm = nodeCutter.GetSpliceNode(range, blockNode);\n }\n splitedElm.parentNode.replaceChild(node, splitedElm);\n }\n }\n };\n InsertHtml.cursorPos = function (lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction) {\n lastSelectionNode.classList.add('lastNode');\n editNode.innerHTML = updateTextNode(editNode.innerHTML, enterAction);\n lastSelectionNode = editNode.querySelector('.lastNode');\n if (!isNOU(lastSelectionNode)) {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n lastSelectionNode.classList.remove('lastNode');\n if (lastSelectionNode.classList.length === 0) {\n lastSelectionNode.removeAttribute('class');\n }\n }\n };\n InsertHtml.imageFocus = function (node, nodeSelection, docElement) {\n var focusNode = document.createTextNode(' ');\n node.parentNode.insertBefore(focusNode, node.nextSibling);\n nodeSelection.setSelectionText(docElement, node.nextSibling, node.nextSibling, 0, 0);\n };\n // eslint-disable-next-line\n InsertHtml.getImmediateBlockNode = function (node, editNode) {\n do {\n node = node.parentNode;\n } while (node && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n InsertHtml.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n InsertHtml.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement)) {\n if (element.parentElement.textContent.trim() === '' && element.parentElement.contentEditable !== 'true') {\n removableElement = this.findDetachEmptyElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n }\n else {\n removableElement = null;\n }\n return removableElement;\n };\n InsertHtml.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n for (var i = 0; i < emptyElements.length; i++) {\n if (CONSTANT.SELF_CLOSING_TAGS.indexOf(emptyElements[i].tagName.toLowerCase()) < 0) {\n var detachableElement = this.findDetachEmptyElem(emptyElements[i]);\n if (!isNOU(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n InsertHtml.closestEle = function (element, editNode) {\n var el = element;\n while (el && el.nodeType === 1) {\n if (el.parentNode === editNode ||\n (!isNOU(el.parentNode.tagName) &&\n CONSTANT.IGNORE_BLOCK_TAGS.indexOf(el.parentNode.tagName.toLocaleLowerCase()) !== -1)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n };\n /**\n * Insert method\n *\n * @hidden\n\n */\n InsertHtml.inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n InsertHtml.contentsDeleted = false;\n return InsertHtml;\n}());\nexport { InsertHtml };\n","import * as CONSTANT from './../base/constant';\nimport { NodeSelection } from '../../selection/selection';\nimport { NodeCutter } from './nodecutter';\nimport { InsertHtml } from './inserthtml';\nimport { createElement, isNullOrUndefined as isNOU, closest } from '@syncfusion/ej2-base';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar LinkCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the editor manager\n * @hidden\n\n */\n function LinkCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n LinkCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.LINK, this.linkCommand, this);\n };\n LinkCommand.prototype.linkCommand = function (e) {\n switch (e.value.toString().toLocaleLowerCase()) {\n case 'createlink':\n case 'editlink':\n this.createLink(e);\n break;\n case 'openlink':\n this.openLink(e);\n break;\n case 'removelink':\n this.removeLink(e);\n break;\n }\n };\n LinkCommand.prototype.createLink = function (e) {\n var closestAnchor = (!isNOU(e.item.selectParent) && e.item.selectParent.length > 0) &&\n closest(e.item.selectParent[0], 'a');\n closestAnchor = !isNOU(closestAnchor) ? closestAnchor :\n (!isNOU(e.item.selectParent) && e.item.selectParent.length > 0) ? (e.item.selectParent[0]) : null;\n if (!isNOU(closestAnchor) && closestAnchor.tagName === 'A') {\n var anchorEle = closestAnchor;\n var linkText = '';\n if (!isNOU(e.item.url)) {\n anchorEle.setAttribute('href', e.item.url);\n }\n if (!isNOU(e.item.title)) {\n anchorEle.setAttribute('title', e.item.title);\n }\n if (!isNOU(e.item.text) && e.item.text !== '') {\n linkText = anchorEle.innerText;\n anchorEle.innerText = e.item.text;\n }\n if (!isNOU(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n }\n else {\n anchorEle.removeAttribute('target');\n }\n if (linkText === e.item.text) {\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle, anchorEle, 1, 1);\n e.item.selection.restore();\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchorEle.childNodes[0].textContent.length : 0;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle.childNodes[0], anchorEle.childNodes[0], startIndex, anchorEle.childNodes[0].textContent.length);\n }\n }\n else {\n var domSelection = new NodeSelection();\n var range = domSelection.getRange(this.parent.currentDocument);\n if (range.endContainer.nodeName === '#text' && range.startContainer.textContent.length === (range.endOffset + 1) &&\n range.endContainer.textContent.charAt(range.endOffset) === ' ' && range.endContainer.nextSibling.nodeName === 'A') {\n domSelection.setSelectionText(this.parent.currentDocument, range.startContainer, range.endContainer, range.startOffset, range.endOffset + 1);\n range = domSelection.getRange(this.parent.currentDocument);\n }\n var text = isNOU(e.item.text) ? true : e.item.text.replace(/ /g, '').localeCompare(range.toString()\n .replace(/\\n/g, ' ').replace(/ /g, '')) < 0;\n if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32\n || e.event.keyCode === 13) || e.item.action === 'Paste' || range.collapsed || text) {\n var anchor = this.createAchorNode(e);\n anchor.innerText = e.item.text === '' ? e.item.url : e.item.text;\n e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32\n || e.event.keyCode === 13)) {\n var startContainer = e.item.selection.range.startContainer;\n startContainer.textContent = this.removeText(startContainer.textContent, e.item.text);\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchor.childNodes[0].textContent.length : 0;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchor.childNodes[0], anchor.childNodes[0], startIndex, anchor.childNodes[0].textContent.length);\n }\n }\n else {\n this.createLinkNode(e);\n }\n }\n if (e.callBack) {\n e.callBack({\n requestType: 'Links',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n LinkCommand.prototype.createLinkNode = function (e) {\n var domSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = domSelection.getRange(this.parent.currentDocument);\n var nodes = this.getSelectionNodes(domSelection.getNodeCollection(range));\n var save = domSelection.save(range, this.parent.currentDocument);\n var txtArray = [];\n var inlineNodes = [];\n var currentNode;\n var removeNodes = [];\n var anchorNodes = [];\n var finalinlineNodes = [];\n var cloneNode;\n for (var index = 0; index < nodes.length; index++) {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n txtArray[index] = nodes[index];\n }\n for (var i = 0; i < txtArray.length; i++) {\n var check = true;\n currentNode = txtArray[i];\n while (check === true) {\n if (currentNode.parentNode.nodeName === 'A') {\n var anchorEle = currentNode.parentNode;\n currentNode.parentNode.parentNode.insertBefore(anchorEle.firstChild, anchorEle);\n currentNode.parentNode.removeChild(anchorEle);\n }\n if (this.isBlockNode(currentNode.parentNode) || txtArray.length === 0 || i === 0 || i === txtArray.length - 1\n || range.startContainer.nodeType === 3) {\n inlineNodes[i] = currentNode;\n check = false;\n }\n else {\n currentNode = currentNode.parentNode;\n }\n }\n }\n for (var i = 0, j_1 = 0; i < inlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[j_1] = inlineNodes[i];\n }\n if (inlineNodes.length > 1 && i < inlineNodes.length - 1) {\n if ((inlineNodes[i].parentElement === inlineNodes[i + 1].parentElement) &&\n (inlineNodes[i] === inlineNodes[i + 1])) {\n continue;\n }\n else {\n finalinlineNodes[j_1 + 1] = inlineNodes[i + 1];\n j_1++;\n }\n }\n }\n var j = 0;\n anchorNodes[j] = this.createAchorNode(e);\n for (var i = 0; i < finalinlineNodes.length; i++) {\n if (i === 0) {\n cloneNode = finalinlineNodes[i].cloneNode(true);\n anchorNodes[i].appendChild(cloneNode);\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n var cln = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cln);\n }\n else {\n j = j + 1;\n anchorNodes[j] = this.createAchorNode(e);\n cloneNode = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cloneNode);\n }\n }\n }\n this.parent.nodeSelection.setRange(document, save.range);\n for (var i = 0, j_2 = 0, k = 0; i <= finalinlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[i].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i].nextSibling);\n if (this.parent.domNode.blockNodes().length === 1) {\n this.parent.nodeSelection.setSelectionNode(this.parent.currentDocument, anchorNodes[j_2]);\n }\n removeNodes[k] = finalinlineNodes[i];\n k++;\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n else {\n j_2 = j_2 + 1;\n finalinlineNodes[i + 1].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i + 1]);\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n }\n }\n for (var i = 0; i < removeNodes.length; i++) {\n if (removeNodes[i].parentNode) {\n removeNodes[i].parentNode.removeChild(removeNodes[i]);\n }\n }\n };\n LinkCommand.prototype.createAchorNode = function (e) {\n var anchorEle = createElement('a', {\n className: 'e-rte-anchor',\n attrs: {\n href: e.item.url,\n title: isNOU(e.item.title) || e.item.title === '' ? e.item.url : e.item.title\n }\n });\n if (!isNOU(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n }\n return anchorEle;\n };\n LinkCommand.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || nodeCollection[index].textContent.trim() === '') {\n if (nodeCollection[index].nodeName !== 'IMG') {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n }\n return nodeCollection.reverse();\n };\n LinkCommand.prototype.isBlockNode = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && CONSTANT.BLOCK_TAGS.indexOf(element.tagName.toLowerCase()) >= 0));\n };\n LinkCommand.prototype.removeText = function (text, val) {\n var arr = text.split(' ');\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === val) {\n arr.splice(i, 1);\n i--;\n }\n }\n return arr.join(' ') + ' ';\n };\n LinkCommand.prototype.openLink = function (e) {\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n LinkCommand.prototype.removeLink = function (e) {\n var blockNodes = this.parent.domNode.blockNodes();\n if (blockNodes.length < 2) {\n this.parent.domNode.setMarker(e.item.selection);\n var closestAnchor = closest(e.item.selectParent[0], 'a');\n var selectParent = closestAnchor ? closestAnchor : e.item.selectParent[0];\n var parent_1 = selectParent.parentNode;\n var child = [];\n for (; selectParent.firstChild; null) {\n child.push(parent_1.insertBefore(selectParent.firstChild, selectParent));\n }\n parent_1.removeChild(selectParent);\n if (child && child.length === 1) {\n e.item.selection.startContainer = e.item.selection.getNodeArray(child[child.length - 1], true);\n e.item.selection.endContainer = e.item.selection.startContainer;\n }\n e.item.selection = this.parent.domNode.saveMarker(e.item.selection);\n }\n else {\n for (var i = 0; i < blockNodes.length; i++) {\n var linkNode = blockNodes[i].querySelectorAll('a');\n for (var j = 0; j < linkNode.length; j++) {\n if (document.getSelection().containsNode(linkNode[j], true)) {\n linkNode[j].outerHTML = linkNode[j].innerHTML;\n }\n }\n }\n }\n e.item.selection.restore();\n this.callBack(e);\n };\n LinkCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return LinkCommand;\n}());\nexport { LinkCommand };\n","import * as CONSTANT from './../base/constant';\nimport { setStyleAttribute, closest } from '@syncfusion/ej2-base';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * Formats internal component\n *\n * @hidden\n\n */\nvar Alignments = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @returns {void}\n * @hidden\n\n */\n function Alignments(parent) {\n this.alignments = {\n 'JustifyLeft': 'left',\n 'JustifyCenter': 'center',\n 'JustifyRight': 'right',\n 'JustifyFull': 'justify'\n };\n this.parent = parent;\n this.addEventListener();\n }\n Alignments.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.ALIGNMENT_TYPE, this.applyAlignment, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Alignments.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'justify-center':\n this.applyAlignment({ subCommand: 'JustifyCenter', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-full':\n this.applyAlignment({ subCommand: 'JustifyFull', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-left':\n this.applyAlignment({ subCommand: 'JustifyLeft', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-right':\n this.applyAlignment({ subCommand: 'JustifyRight', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Alignments.prototype.getTableNode = function (range) {\n var startNode = range.startContainer.nodeType === Node.ELEMENT_NODE\n ? range.startContainer : range.startContainer.parentNode;\n var cellNode = closest(startNode, 'td,th');\n return [cellNode];\n };\n Alignments.prototype.applyAlignment = function (e) {\n var isTableAlign = e.value === 'Table' ? true : false;\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n if (!isTableAlign) {\n this.parent.domNode.setMarker(save);\n var alignmentNodes = this.parent.domNode.blockNodes();\n for (var i = 0; i < alignmentNodes.length; i++) {\n var parentNode = alignmentNodes[i];\n setStyleAttribute(parentNode, { 'text-align': this.alignments[e.subCommand] });\n }\n var imageTags = this.parent.domNode.getImageTagInSelection();\n for (var i = 0; i < imageTags.length; i++) {\n var elementNode = [];\n elementNode.push(imageTags[i]);\n this.parent.imgObj.imageCommand({\n item: {\n selectNode: elementNode\n },\n subCommand: e.subCommand,\n value: e.subCommand,\n callBack: e.callBack,\n selector: e.selector\n });\n }\n this.parent.editableElement.focus();\n save = this.parent.domNode.saveMarker(save);\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n save.restore();\n }\n else {\n setStyleAttribute(this.getTableNode(range)[0], { 'text-align': this.alignments[e.subCommand] });\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: (isTableAlign ? this.getTableNode(range) : this.parent.domNode.blockNodes())\n });\n }\n };\n return Alignments;\n}());\nexport { Alignments };\n","import * as CONSTANT from './../base/constant';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * Indents internal component\n *\n * @hidden\n\n */\nvar Indents = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function Indents(parent) {\n this.indentValue = 20;\n this.parent = parent;\n this.addEventListener();\n }\n Indents.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INDENT_TYPE, this.applyIndents, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Indents.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'indents':\n this.applyIndents({ subCommand: 'Indent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'outdents':\n this.applyIndents({ subCommand: 'Outdent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Indents.prototype.applyIndents = function (e) {\n var editEle = this.parent.editableElement;\n var isRtl = editEle.classList.contains('e-rtl');\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var indentsNodes = this.parent.domNode.blockNodes();\n var parentNodes = indentsNodes.slice();\n var listsNodes = [];\n for (var i = 0; i < parentNodes.length; i++) {\n if (parentNodes[i].tagName !== 'LI' && 'LI' === parentNodes[i].parentNode.tagName) {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i].parentNode);\n }\n else if (parentNodes[i].tagName === 'LI') {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i]);\n }\n }\n if (listsNodes.length > 0) {\n this.parent.observer.notify(EVENTS.KEY_DOWN_HANDLER, {\n event: {\n preventDefault: function () {\n return;\n },\n stopPropagation: function () {\n return;\n },\n shiftKey: (e.subCommand === 'Indent' ? false : true),\n which: 9,\n action: 'indent'\n },\n ignoreDefault: true\n });\n }\n for (var i = 0; i < indentsNodes.length; i++) {\n var parentNode = indentsNodes[i];\n var marginLeftOrRight = isRtl ? parentNode.style.marginRight : parentNode.style.marginLeft;\n var indentsValue = void 0;\n if (e.subCommand === 'Indent') {\n /* eslint-disable */\n indentsValue = marginLeftOrRight === '' ? this.indentValue + 'px' : parseInt(marginLeftOrRight, null) + this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n }\n else {\n indentsValue = (marginLeftOrRight === '' || marginLeftOrRight === '0px') ? '' : parseInt(marginLeftOrRight, null) - this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n /* eslint-enable */\n }\n }\n editEle.focus();\n if (isIDevice()) {\n setEditFrameFocus(editEle, e.selector);\n }\n save = this.parent.domNode.saveMarker(save);\n save.restore();\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n return Indents;\n}());\nexport { Indents };\n","/**\n * Rich Text Editor classes defined here.\n */\n/**\n * @hidden\n\n */\nexport var CLASS_IMAGE_RIGHT = 'e-imgright';\nexport var CLASS_IMAGE_LEFT = 'e-imgleft';\nexport var CLASS_IMAGE_CENTER = 'e-imgcenter';\nexport var CLASS_VIDEO_RIGHT = 'e-video-right';\nexport var CLASS_VIDEO_LEFT = 'e-video-left';\nexport var CLASS_VIDEO_CENTER = 'e-video-center';\nexport var CLASS_IMAGE_BREAK = 'e-imgbreak';\nexport var CLASS_AUDIO_BREAK = 'e-audio-break';\nexport var CLASS_VIDEO_BREAK = 'e-video-break';\nexport var CLASS_CAPTION = 'e-img-caption';\nexport var CLASS_RTE_CAPTION = 'e-rte-img-caption';\nexport var CLASS_CAPTION_INLINE = 'e-caption-inline';\nexport var CLASS_IMAGE_INLINE = 'e-imginline';\nexport var CLASS_AUDIO_INLINE = 'e-audio-inline';\nexport var CLASS_CLICK_ELEM = 'e-clickelem';\nexport var CLASS_VIDEO_CLICK_ELEM = 'e-video-clickelem';\nexport var CLASS_AUDIO = 'e-rte-audio';\nexport var CLASS_VIDEO = 'e-rte-video';\nexport var CLASS_AUDIO_WRAP = 'e-audio-wrap';\nexport var CLASS_VIDEO_WRAP = 'e-video-wrap';\nexport var CLASS_EMBED_VIDEO_WRAP = 'e-embed-video-wrap';\nexport var CLASS_AUDIO_FOCUS = 'e-audio-focus';\nexport var CLASS_VIDEO_FOCUS = 'e-video-focus';\nexport var CLASS_VIDEO_INLINE = 'e-video-inline';\n","import { createElement, isNullOrUndefined as isNOU, detach, closest, addClass, removeClass, select, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar ImageCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function ImageCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ImageCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.IMAGE, this.imageCommand, this);\n };\n /**\n * imageCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n ImageCommand.prototype.imageCommand = function (e) {\n switch (e.value.toString().toLowerCase()) {\n case 'image':\n case 'replace':\n this.createImage(e);\n break;\n case 'insertlink':\n this.insertImageLink(e);\n break;\n case 'openimagelink':\n this.openImageLink(e);\n break;\n case 'editimagelink':\n this.editImageLink(e);\n break;\n case 'removeimagelink':\n this.removeImageLink(e);\n break;\n case 'remove':\n this.removeImage(e);\n break;\n case 'alttext':\n this.insertAltTextImage(e);\n break;\n case 'dimension':\n this.imageDimension(e);\n break;\n case 'caption':\n this.imageCaption(e);\n break;\n case 'justifyleft':\n this.imageJustifyLeft(e);\n break;\n case 'justifycenter':\n this.imageJustifyCenter(e);\n break;\n case 'justifyright':\n this.imageJustifyRight(e);\n break;\n case 'inline':\n this.imageInline(e);\n break;\n case 'break':\n this.imageBreak(e);\n break;\n }\n };\n ImageCommand.prototype.createImage = function (e) {\n var _this = this;\n var isReplaced = false;\n e.item.url = isNOU(e.item.url) || e.item.url === 'undefined' ? e.item.src : e.item.url;\n if (!isNOU(e.item.selectParent) && e.item.selectParent[0].tagName === 'IMG') {\n var imgEle = e.item.selectParent[0];\n this.setStyle(imgEle, e);\n isReplaced = true;\n }\n else {\n var imgElement = createElement('img');\n this.setStyle(imgElement, e);\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n if (!isNOU(e.selector) && e.selector === 'pasteCleanupModule') {\n e.callBack({ requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [imgElement]\n });\n }\n else {\n InsertHtml.Insert(this.parent.currentDocument, imgElement, this.parent.editableElement);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var imgElm_1 = (e.value === 'Replace' || isReplaced) ? e.item.selectParent[0] :\n (Browser.isIE ? selectedNode.previousSibling : selectedNode.previousElementSibling);\n imgElm_1.addEventListener('load', function () {\n if (e.value !== 'Replace' || !isReplaced) {\n e.callBack({\n requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [imgElm_1]\n });\n }\n });\n }\n };\n ImageCommand.prototype.setStyle = function (imgElement, e) {\n if (!isNOU(e.item.url)) {\n imgElement.setAttribute('src', e.item.url);\n }\n imgElement.setAttribute('class', 'e-rte-image' + (isNOU(e.item.cssClass) ? '' : ' ' + e.item.cssClass));\n if (!isNOU(e.item.altText)) {\n imgElement.setAttribute('alt', e.item.altText);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.width)) {\n imgElement.setAttribute('width', this.calculateStyleValue(e.item.width.width));\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.height)) {\n imgElement.setAttribute('height', this.calculateStyleValue(e.item.height.height));\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.minWidth)) {\n imgElement.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.maxWidth)) {\n imgElement.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.minHeight)) {\n imgElement.style.minHeight = this.calculateStyleValue(e.item.height.minHeight);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.maxHeight)) {\n imgElement.style.maxHeight = this.calculateStyleValue(e.item.height.maxHeight);\n }\n };\n ImageCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') || value.indexOf('%') || value.indexOf('auto')) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n ImageCommand.prototype.insertImageLink = function (e) {\n var anchor = createElement('a', {\n attrs: {\n href: e.item.url\n }\n });\n if (e.item.selectNode[0].parentElement.classList.contains('e-img-wrap')) {\n e.item.selection.restore();\n anchor.setAttribute('contenteditable', 'true');\n }\n anchor.appendChild(e.item.selectNode[0]);\n if (!isNOU(e.item.target)) {\n anchor.setAttribute('target', e.item.target);\n }\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.openImageLink = function (e) {\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n ImageCommand.prototype.removeImageLink = function (e) {\n var selectParent = e.item.selectParent[0];\n if (selectParent.classList.contains('e-img-caption')) {\n var capImgWrap = select('.e-img-wrap', selectParent);\n var textEle = select('.e-img-inner', selectParent);\n var newTextEle = textEle.cloneNode(true);\n detach(select('a', selectParent));\n detach(textEle);\n capImgWrap.appendChild(e.item.insertElement);\n capImgWrap.appendChild(newTextEle);\n }\n else {\n detach(selectParent);\n if (Browser.isIE && e.item.selection) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.editImageLink = function (e) {\n e.item.selectNode[0].parentElement.href = e.item.url;\n if (isNOU(e.item.target)) {\n e.item.selectNode[0].parentElement.removeAttribute('target');\n }\n else {\n e.item.selectNode[0].parentElement.target = e.item.target;\n }\n this.callBack(e);\n };\n ImageCommand.prototype.removeImage = function (e) {\n if (closest(e.item.selectNode[0], 'a')) {\n if (e.item.selectNode[0].parentElement.nodeName === 'A' && !isNOU(e.item.selectNode[0].parentElement.innerText)) {\n if (!isNOU(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION))) {\n detach(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION));\n }\n else {\n detach(e.item.selectNode[0]);\n }\n }\n else {\n detach(closest(e.item.selectNode[0], 'a'));\n }\n }\n else if (!isNOU(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION))) {\n detach(closest(e.item.selectNode[0], '.' + classes.CLASS_CAPTION));\n }\n else {\n detach(e.item.selectNode[0]);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.insertAltTextImage = function (e) {\n e.item.selectNode[0].setAttribute('alt', e.item.altText);\n this.callBack(e);\n };\n ImageCommand.prototype.imageDimension = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.style.height = '';\n selectNode.style.width = '';\n if (e.item.width !== 'auto') {\n selectNode.style.width = formatUnit(e.item.width);\n }\n else {\n selectNode.removeAttribute('width');\n }\n if (e.item.height !== 'auto') {\n selectNode.style.height = formatUnit(e.item.height);\n }\n else {\n selectNode.removeAttribute('height');\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageCaption = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.imageJustifyLeft = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n addClass([selectNode], classes.CLASS_IMAGE_LEFT);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_LEFT);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageJustifyCenter = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_CENTER);\n addClass([selectNode], classes.CLASS_IMAGE_CENTER);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_CENTER);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageJustifyRight = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNOU(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], classes.CLASS_IMAGE_LEFT);\n addClass([selectNode.parentElement], classes.CLASS_IMAGE_RIGHT);\n addClass([selectNode], classes.CLASS_IMAGE_RIGHT);\n }\n else {\n addClass([selectNode], classes.CLASS_IMAGE_RIGHT);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageInline = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n addClass([selectNode], classes.CLASS_IMAGE_INLINE);\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_BREAK);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_CAPTION_INLINE);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageBreak = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], classes.CLASS_IMAGE_BREAK);\n addClass([selectNode], 'e-rte-image');\n if (!isNOU(closest(selectNode, '.' + classes.CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_CAPTION_INLINE);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + classes.CLASS_CAPTION)], classes.CLASS_IMAGE_BREAK);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return ImageCommand;\n}());\nexport { ImageCommand };\n","import { createElement, isNullOrUndefined as isNOU, detach, addClass, Browser } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Audio internal component\n *\n * @hidden\n\n */\nvar AudioCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Audio plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function AudioCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n AudioCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.AUDIO, this.audioCommand, this);\n };\n /**\n * audioCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n AudioCommand.prototype.audioCommand = function (e) {\n var selectNode;\n var value = e.value.toString().toLowerCase();\n if (value === 'inline' || value === 'break' || value === 'audioremove') {\n selectNode = e.item.selectNode[0];\n }\n switch (value) {\n case 'audio':\n case 'audioreplace':\n this.createAudio(e);\n break;\n case 'inline':\n selectNode.removeAttribute('class');\n selectNode.closest('.' + classes.CLASS_AUDIO_WRAP).style.display = 'inline-block';\n addClass([selectNode], [classes.CLASS_AUDIO, classes.CLASS_AUDIO_INLINE, classes.CLASS_AUDIO_FOCUS]);\n this.callBack(e);\n break;\n case 'break':\n selectNode.removeAttribute('class');\n selectNode.closest('.' + classes.CLASS_AUDIO_WRAP).style.display = 'block';\n addClass([selectNode], [classes.CLASS_AUDIO_BREAK, classes.CLASS_AUDIO, classes.CLASS_AUDIO_FOCUS]);\n this.callBack(e);\n break;\n case 'audioremove':\n detach(selectNode);\n this.callBack(e);\n break;\n }\n };\n AudioCommand.prototype.createAudio = function (e) {\n var _this = this;\n var isReplaced = false;\n var wrapElement;\n if (!isNOU(e.item.selectParent) && e.item.selectParent[0].classList &&\n (e.item.selectParent[0].classList.contains(classes.CLASS_CLICK_ELEM) ||\n e.item.selectParent[0].classList.contains(classes.CLASS_AUDIO_WRAP))) {\n var audioEle = e.item.selectParent[0].querySelector('source');\n this.setStyle(audioEle, e);\n isReplaced = true;\n }\n else {\n wrapElement = createElement('span', { className: classes.CLASS_AUDIO_WRAP, attrs: { contentEditable: 'false', title: e.item.fileName } });\n var audElement = createElement('audio', { className: classes.CLASS_AUDIO + ' ' + classes.CLASS_AUDIO_INLINE, attrs: { controls: '' } });\n var sourceElement = createElement('source');\n var clickElement = createElement('span', { className: classes.CLASS_CLICK_ELEM });\n this.setStyle(sourceElement, e);\n audElement.appendChild(sourceElement);\n clickElement.appendChild(audElement);\n wrapElement.appendChild(clickElement);\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, wrapElement, this.parent.editableElement);\n if (wrapElement.nextElementSibling === null) {\n var insertElem = createElement('br');\n wrapElement.parentNode.insertBefore(insertElem, wrapElement.nextSibling);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var audioElm_1 = (e.value === 'AudioReplace' || isReplaced) ? e.item.selectParent[0].querySelector('audio')\n : (Browser.isIE ? selectedNode : selectedNode.querySelector('audio'));\n audioElm_1.addEventListener('loadeddata', function () {\n if (e.value !== 'AudioReplace' || !isReplaced) {\n e.callBack({\n requestType: 'Audios',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [audioElm_1]\n });\n }\n });\n if (isReplaced) {\n audioElm_1.load();\n }\n }\n };\n AudioCommand.prototype.setStyle = function (sourceElement, e) {\n if (!isNOU(e.item.url)) {\n sourceElement.setAttribute('src', e.item.url);\n }\n sourceElement.type = e.item.fileName && e.item.fileName.split('.').length > 0 ?\n 'audio/' + e.item.fileName.split('.')[e.item.fileName.split('.').length - 1] :\n e.item.url && e.item.url.split('.').length > 0 ? 'audio/' + e.item.url.split('.')[e.item.url.split('.').length - 1] : '';\n };\n AudioCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return AudioCommand;\n}());\nexport { AudioCommand };\n","import { createElement, isNullOrUndefined as isNOU, detach, addClass, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport * as classes from './../base/classes';\nimport { InsertHtml } from './inserthtml';\n/**\n * Video internal component\n *\n * @hidden\n\n */\nvar VideoCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Video plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function VideoCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n VideoCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.VIDEO, this.videoCommand, this);\n };\n /**\n * videoCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n\n */\n VideoCommand.prototype.videoCommand = function (e) {\n var selectNode;\n var videoWrapNode;\n var videoClickElem;\n var value = e.value.toString().toLowerCase();\n if (value !== 'video' && value !== 'videoreplace') {\n selectNode = e.item.selectNode[0];\n videoWrapNode = selectNode.closest('.' + classes.CLASS_EMBED_VIDEO_WRAP);\n videoClickElem = selectNode.closest('.' + classes.CLASS_VIDEO_CLICK_ELEM);\n }\n switch (value) {\n case 'video':\n case 'videoreplace':\n this.createVideo(e);\n break;\n case 'videodimension':\n this.videoDimension(e);\n break;\n case 'inline':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'inline-block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_INLINE, classes.CLASS_VIDEO_FOCUS]);\n this.callBack(e);\n break;\n case 'break':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [classes.CLASS_VIDEO_BREAK, classes.CLASS_VIDEO, classes.CLASS_VIDEO_FOCUS]);\n this.callBack(e);\n break;\n case 'justifyleft':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = 'left';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_LEFT]);\n this.callBack(e);\n break;\n case 'justifycenter':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_CENTER]);\n this.callBack(e);\n break;\n case 'justifyright':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = 'right';\n }\n addClass([selectNode], [classes.CLASS_VIDEO, classes.CLASS_VIDEO_RIGHT]);\n this.callBack(e);\n break;\n case 'videoremove':\n detach(selectNode.parentElement);\n this.callBack(e);\n break;\n }\n };\n VideoCommand.prototype.createVideo = function (e) {\n var _this = this;\n var isReplaced = false;\n var wrapElement;\n var vidElement;\n var sourceElement;\n if (e.value === 'VideoReplace' && !isNOU(e.item.selectParent) && (e.item.selectParent[0].tagName === 'VIDEO')) {\n var videoEle = e.item.selectParent[0].querySelector('source');\n this.setStyle(videoEle, e, videoEle);\n isReplaced = true;\n }\n else if (e.value === 'VideoReplace' && !isNOU(e.item.selectParent) &&\n e.item.selectParent[0].classList &&\n e.item.selectParent[0].classList.contains(classes.CLASS_VIDEO_CLICK_ELEM)) {\n e.item.selectParent[0].innerHTML = e.item.fileName;\n this.setStyle(e.item.selectParent[0].firstElementChild, e, e.item.selectParent[0].firstElementChild);\n }\n else {\n if (!e.item.isEmbedUrl) {\n wrapElement = createElement('span', { className: classes.CLASS_VIDEO_WRAP, attrs: { contentEditable: 'false', title: e.item.fileName } });\n vidElement = createElement('video', { className: classes.CLASS_VIDEO + ' ' + classes.CLASS_VIDEO_INLINE, attrs: { controls: '' } });\n sourceElement = createElement('source');\n this.setStyle(sourceElement, e, vidElement);\n vidElement.appendChild(sourceElement);\n wrapElement.appendChild(vidElement);\n }\n else {\n wrapElement = createElement('span', { className: classes.CLASS_EMBED_VIDEO_WRAP, attrs: { contentEditable: 'false' } });\n var clickElement = createElement('span', { className: classes.CLASS_VIDEO_CLICK_ELEM });\n var temp = createElement('template');\n temp.innerHTML = e.item.fileName;\n clickElement.appendChild(temp.content);\n vidElement = sourceElement = clickElement.firstElementChild;\n this.setStyle(sourceElement, e, vidElement);\n wrapElement.appendChild(clickElement);\n }\n if (!isNOU(e.item.selection)) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, wrapElement, this.parent.editableElement);\n if (wrapElement.nextElementSibling === null) {\n var insertElem = createElement('br');\n wrapElement.parentNode.insertBefore(insertElem, wrapElement.nextSibling);\n }\n }\n if (e.callBack && (isNOU(e.selector) || !isNOU(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var videoElm_1 = (e.value === 'VideoReplace' || isReplaced) ? !e.item.isEmbedUrl ? e.item.selectParent[0] : e.item.selectParent[0].querySelector('iframe')\n : (Browser.isIE ? selectedNode : !e.item.isEmbedUrl ? selectedNode.lastElementChild : selectedNode.querySelector('iframe'));\n videoElm_1.addEventListener(videoElm_1.tagName !== 'IFRAME' ? 'loadeddata' : 'load', function () {\n if (e.value !== 'VideoReplace' || !isReplaced) {\n if (e.item.isEmbedUrl && videoElm_1) {\n videoElm_1.classList.add('e-rte-embed-url');\n }\n e.callBack({\n requestType: 'Videos',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [videoElm_1]\n });\n }\n });\n if (isReplaced) {\n videoElm_1.load();\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n vidElement.addEventListener('play', function () { _this.editAreaVideoClick(e); });\n vidElement.addEventListener('pause', function () { _this.editAreaVideoClick(e); });\n }\n }\n };\n VideoCommand.prototype.editAreaVideoClick = function (e) {\n e.callBack({\n requestType: 'VideosPlayPause',\n editorMode: 'HTML',\n event: e.event\n });\n };\n VideoCommand.prototype.setStyle = function (sourceElement, e, videoEle) {\n if (e.item.url !== '' && !isNOU(e.item.url)) {\n sourceElement.setAttribute('src', e.item.url);\n }\n if (!e.item.isEmbedUrl) {\n sourceElement.type = e.item.fileName && e.item.fileName.split('.').length > 0 ?\n 'video/' + e.item.fileName.split('.')[e.item.fileName.split('.').length - 1] :\n e.item.url && e.item.url.split('.').length > 0 ? 'video/' + e.item.url.split('.')[e.item.url.split('.').length - 1] : '';\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.width)) {\n videoEle.setAttribute('width', formatUnit(e.item.width.width));\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.height)) {\n videoEle.setAttribute('height', formatUnit(e.item.height.height));\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.minWidth)) {\n videoEle.style.minWidth = formatUnit(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width) && !isNOU(e.item.width.maxWidth)) {\n videoEle.style.maxWidth = formatUnit(e.item.width.maxWidth);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.minHeight)) {\n videoEle.style.minHeight = formatUnit(e.item.height.minHeight);\n }\n if (!isNOU(e.item.height) && !isNOU(e.item.height.maxHeight)) {\n videoEle.style.maxHeight = formatUnit(e.item.height.maxHeight);\n }\n };\n VideoCommand.prototype.videoDimension = function (e) {\n var selectNode = !(e.item.selectNode[0].classList.contains(classes.CLASS_VIDEO_CLICK_ELEM)) ? e.item.selectNode[0] :\n e.item.selectNode[0].querySelector('iframe');\n selectNode.style.height = '';\n selectNode.style.width = '';\n if (e.item.width !== 'auto') {\n selectNode.style.width = formatUnit(e.item.width);\n }\n else {\n selectNode.removeAttribute('width');\n }\n if (e.item.height !== 'auto') {\n selectNode.style.height = formatUnit(e.item.height);\n }\n else {\n selectNode.removeAttribute('height');\n }\n this.callBack(e);\n };\n VideoCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return VideoCommand;\n}());\nexport { VideoCommand };\n","import { createElement, closest, detach, Browser, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Link internal component\n *\n * @hidden\n\n */\nvar TableCommand = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function TableCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n TableCommand.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.TABLE, this.createTable, this);\n this.parent.observer.on(CONSTANT.INSERT_ROW, this.insertRow, this);\n this.parent.observer.on(CONSTANT.INSERT_COLUMN, this.insertColumn, this);\n this.parent.observer.on(CONSTANT.DELETEROW, this.deleteRow, this);\n this.parent.observer.on(CONSTANT.DELETECOLUMN, this.deleteColumn, this);\n this.parent.observer.on(CONSTANT.REMOVETABLE, this.removeTable, this);\n this.parent.observer.on(CONSTANT.TABLEHEADER, this.tableHeader, this);\n this.parent.observer.on(CONSTANT.TABLE_VERTICAL_ALIGN, this.tableVerticalAlign, this);\n this.parent.observer.on(CONSTANT.TABLE_MERGE, this.cellMerge, this);\n this.parent.observer.on(CONSTANT.TABLE_HORIZONTAL_SPLIT, this.HorizontalSplit, this);\n this.parent.observer.on(CONSTANT.TABLE_VERTICAL_SPLIT, this.VerticalSplit, this);\n this.parent.observer.on(CONSTANT.TABLE_MOVE, this.tableMove, this);\n };\n TableCommand.prototype.createTable = function (e) {\n var table = createElement('table', { className: 'e-rte-table' });\n var tblBody = createElement('tbody');\n if (!isNOU(e.item.width.width)) {\n table.style.width = this.calculateStyleValue(e.item.width.width);\n }\n if (!isNOU(e.item.width.minWidth)) {\n table.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNOU(e.item.width.maxWidth)) {\n table.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n var tdWid = parseInt(e.item.width.width, 10) > 100 ?\n 100 / e.item.columns : parseInt(e.item.width.width, 10) / e.item.columns;\n for (var i = 0; i < e.item.rows; i++) {\n var row = createElement('tr');\n for (var j = 0; j < e.item.columns; j++) {\n var cell = createElement('td');\n cell.appendChild(createElement('br'));\n cell.style.width = tdWid + '%';\n row.appendChild(cell);\n }\n tblBody.appendChild(row);\n }\n table.appendChild(tblBody);\n e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, table, this.parent.editableElement);\n this.removeEmptyNode();\n e.item.selection.setSelectionText(this.parent.currentDocument, table.querySelector('td'), table.querySelector('td'), 0, 0);\n if (table.nextElementSibling === null) {\n var insertElem = void 0;\n if (e.enterAction === 'DIV') {\n insertElem = createElement('div');\n insertElem.appendChild(createElement('br'));\n }\n else if (e.enterAction === 'BR') {\n insertElem = createElement('br');\n }\n else {\n insertElem = createElement('p');\n insertElem.appendChild(createElement('br'));\n }\n this.insertAfter(insertElem, table);\n }\n table.querySelector('td').classList.add('e-cell-select');\n if (e.callBack) {\n e.callBack({\n requestType: 'Table',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [table]\n });\n }\n return table;\n };\n TableCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') || value.indexOf('%') || value.indexOf('auto')) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n TableCommand.prototype.removeEmptyNode = function () {\n var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');\n for (var i = 0; i < emptyUl.length; i++) {\n detach(emptyUl[i]);\n }\n var emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');\n for (var i = 0; i < emptyLiChild.length; i++) {\n detach(emptyLiChild[i]);\n if (emptyLiChild.length === i + 1) {\n emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');\n i = -1;\n }\n }\n var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');\n for (var i = 0; i < emptyLi.length; i++) {\n detach(emptyLi[i]);\n }\n };\n TableCommand.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n TableCommand.prototype.getSelectedCellMinMaxIndex = function (e) {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n var a = 0;\n var minI = e.length;\n var maxI = 0;\n var minJ = e[0].length;\n var maxJ = 0;\n //eslint-disable-next-line\n for (var i = 0; a < selectedCells.length; a++) {\n var selectedCellIndex = this.getCorrespondingIndex(selectedCells[a], e);\n var minMaxIndex = this.FindIndex(selectedCellIndex[0], selectedCellIndex[1], e);\n //eslint-disable-next-line\n minI = Math.min(selectedCellIndex[0], minI),\n maxI = Math.max(minMaxIndex[0], maxI),\n minJ = Math.min(selectedCellIndex[1], minJ),\n maxJ = Math.max(minMaxIndex[1], maxJ);\n }\n return {\n startRow: minI,\n endRow: maxI,\n startColumn: minJ,\n endColumn: maxJ\n };\n };\n TableCommand.prototype.insertRow = function (e) {\n var isBelow = e.item.subCommand === 'InsertRowBefore' ? false : true;\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n if (selectedCell.nodeName.toLowerCase() === 'th' && e.item.subCommand === 'InsertRowBefore') {\n return;\n }\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length === 0) {\n var lastRow = this.curTable.rows[this.curTable.rows.length - 1];\n var cloneRow = lastRow.cloneNode(true);\n cloneRow.removeAttribute('rowspan');\n this.insertAfter(cloneRow, lastRow);\n }\n else {\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minVal = isBelow ? minMaxIndex.endRow : minMaxIndex.startRow;\n var newRow = createElement('tr');\n var isHeaderSelect = this.curTable.querySelectorAll('th.e-cell-select').length > 0;\n for (var i = 0; i < allCells[minVal].length; i++) {\n // eslint-disable-next-line max-len\n if (isBelow && minVal < allCells.length - 1 && allCells[minVal][i] === allCells[minVal + 1][i] ||\n !isBelow && 0 < minVal && allCells[minVal][i] === allCells[minVal - 1][i]) {\n if (0 === i || 0 < i && allCells[minVal][i] !== allCells[minVal][i - 1]) {\n allCells[minVal][i].setAttribute('rowspan', (parseInt(allCells[minVal][i].getAttribute('rowspan'), 10) + 1).toString());\n }\n }\n else {\n var tdElement = createElement('td');\n tdElement.appendChild(createElement('br'));\n newRow.appendChild(tdElement);\n tdElement.setAttribute('style', allCells[(isHeaderSelect && isBelow) ? allCells[(minVal + 1)] ? (minVal + 1) : minVal : minVal][i].getAttribute('style'));\n }\n }\n // eslint-disable-next-line\n var selectedRow = void 0;\n if (isHeaderSelect && isBelow) {\n selectedRow = this.curTable.querySelector('tbody').childNodes[0];\n }\n else {\n selectedRow = this.curTable.rows[minVal];\n }\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertRowBefore') ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n (isHeaderSelect ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n this.insertAfter(newRow, selectedRow));\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.insertColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var curRow = closest(selectedCell, 'tr');\n var curCell;\n var allRows = closest((curRow), 'table').rows;\n var colIndex = Array.prototype.slice.call(curRow.querySelectorAll(':scope > td, :scope > th')).indexOf(selectedCell);\n var previousWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length);\n var currentWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length + 1);\n var currentTabElm = closest(curRow, 'table');\n var thTdElm = closest(curRow, 'table').querySelectorAll('th,td');\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].dataset.oldWidth = (thTdElm[i].offsetWidth / currentTabElm.offsetWidth * 100) + '%';\n }\n for (var i = 0; i < allRows.length; i++) {\n curCell = allRows[i].querySelectorAll(':scope > td, :scope > th')[colIndex];\n var colTemplate = curCell.cloneNode(true);\n colTemplate.innerHTML = '';\n colTemplate.appendChild(createElement('br'));\n colTemplate.removeAttribute('class');\n colTemplate.removeAttribute('colspan');\n colTemplate.removeAttribute('rowspan');\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertColumnLeft') ? curCell.parentElement.insertBefore(colTemplate, curCell) :\n this.insertAfter(colTemplate, curCell);\n colTemplate.style.width = currentWidth.toFixed(4) + '%';\n delete colTemplate.dataset.oldWidth;\n }\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].style.width = (Number(thTdElm[i].dataset.oldWidth.split('%')[0]) * currentWidth / previousWidth).toFixed(4) + '%';\n delete thTdElm[i].dataset.oldWidth;\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, selectedCell, selectedCell, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var tBodyHeadEle = closest(selectedCell, selectedCell.tagName === 'TH' ? 'thead' : 'tbody');\n var rowIndex = tBodyHeadEle && Array.prototype.indexOf.call(tBodyHeadEle.childNodes, selectedCell.parentNode);\n this.curTable = closest(selectedCell, 'table');\n var curRow = closest(selectedCell, 'tr');\n if (curRow.querySelectorAll('th,td').length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n var deleteIndex = void 0;\n var allCells = this.getCorrespondingColumns();\n //eslint-disable-next-line\n var selectedMinMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minCol = selectedMinMaxIndex.startColumn;\n var maxCol = selectedMinMaxIndex.endColumn;\n for (var i = 0; i < allCells.length; i++) {\n var currentRow = allCells[i];\n for (var j = 0; j < currentRow.length; j++) {\n var currentCell = currentRow[j];\n //eslint-disable-next-line\n var currentCellIndex = this.getCorrespondingIndex(currentCell, allCells);\n var colSpanVal = parseInt(currentCell.getAttribute('colspan'), 10) || 1;\n if (currentCellIndex[1] + (colSpanVal - 1) >= minCol && currentCellIndex[1] <= maxCol) {\n if (colSpanVal > 1) {\n currentCell.setAttribute('colspan', (colSpanVal - 1).toString());\n }\n else {\n detach(currentCell);\n deleteIndex = j;\n if (Browser.isIE) {\n e.item.selection.setSelectionText(this.parent.currentDocument, this.curTable.querySelector('td'), this.curTable.querySelector('td'), 0, 0);\n this.curTable.querySelector('td, th').classList.add('e-cell-select');\n }\n }\n }\n }\n }\n if (deleteIndex > -1) {\n var rowHeadEle = tBodyHeadEle.children[rowIndex];\n var nextFocusCell = rowHeadEle &&\n rowHeadEle.children[(deleteIndex <= rowHeadEle.children.length - 1 ? deleteIndex : deleteIndex - 1)];\n if (nextFocusCell) {\n e.item.selection.setSelectionText(this.parent.currentDocument, nextFocusCell, nextFocusCell, 0, 0);\n nextFocusCell.classList.add('e-cell-select');\n }\n }\n }\n if (e.callBack) {\n var sContainer = this.parent.nodeSelection.getRange(this.parent.currentDocument).startContainer;\n if (sContainer.nodeName !== 'TD') {\n var startChildLength = this.parent.nodeSelection.getRange(this.parent.currentDocument).startOffset;\n var focusNode = sContainer.children[startChildLength];\n if (focusNode) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, focusNode, 0);\n }\n }\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteRow = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var colIndex = Array.prototype.indexOf.call(selectedCell.parentNode.childNodes, selectedCell);\n this.curTable = closest(selectedCell, 'table');\n var currentRow;\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var maxI;\n var j;\n if (this.curTable.rows.length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n for (maxI = minMaxIndex.endRow; maxI >= minMaxIndex.startRow; maxI--) {\n currentRow = this.curTable.rows[maxI];\n for (j = 0; j < allCells[maxI].length; j++) {\n if (j === 0 || allCells[maxI][j] !== allCells[maxI][j - 1]) {\n if (1 < parseInt(allCells[maxI][j].getAttribute('rowspan'), 10)) {\n var rowSpanVal = parseInt(allCells[maxI][j].getAttribute('rowspan'), 10) - 1;\n /* eslint-disable */\n if (1 === rowSpanVal) {\n allCells[maxI][j].removeAttribute('rowspan');\n var cell = allCells[maxI][j].cloneNode(true);\n allCells = this.getCorrespondingColumns();\n if (allCells[rowSpanVal][j] && allCells[rowSpanVal][j].parentElement) {\n allCells[rowSpanVal][j].parentElement.insertBefore(cell, allCells[rowSpanVal][j]);\n }\n }\n else {\n allCells[maxI][j].setAttribute('rowspan', rowSpanVal.toString());\n }\n /* eslint-enable */\n }\n }\n // eslint-disable-next-line max-len\n if (maxI < allCells.length - 1 && allCells[maxI][j] === allCells[maxI + 1][j] && (0 === maxI ||\n allCells[maxI][j] !== allCells[maxI - 1][j])) {\n var element = allCells[maxI][j];\n var index = void 0;\n // eslint-disable-next-line max-len\n for (index = j; 0 < index && allCells[maxI][index] === allCells[maxI][index - 1]; index--) {\n if (index === 0) {\n this.curTable.rows[maxI + 1].prepend(element);\n }\n else {\n allCells[maxI + 1][index - 1].insertAdjacentElement('afterend', element);\n }\n }\n }\n }\n var deleteIndex = currentRow.rowIndex;\n this.curTable.deleteRow(deleteIndex);\n var focusTrEle = !isNOU(this.curTable.rows[deleteIndex]) ? this.curTable.querySelectorAll('tbody tr')[deleteIndex]\n : this.curTable.querySelectorAll('tbody tr')[deleteIndex - 1];\n var nextFocusCell = focusTrEle && focusTrEle.querySelectorAll('td')[colIndex];\n if (nextFocusCell) {\n e.item.selection.setSelectionText(this.parent.currentDocument, nextFocusCell, nextFocusCell, 0, 0);\n nextFocusCell.classList.add('e-cell-select');\n }\n else {\n e.item.selection.setSelectionText(this.parent.currentDocument, this.curTable.querySelector('td'), this.curTable.querySelector('td'), 0, 0);\n this.curTable.querySelector('td, th').classList.add('e-cell-select');\n }\n }\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.removeTable = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n selectedCell = (selectedCell.nodeType === 3) ? selectedCell.parentNode : selectedCell;\n var selectedTable = closest(selectedCell.parentElement, 'table');\n if (selectedTable) {\n e.item.selection.restore();\n detach(selectedTable);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.tableHeader = function (e) {\n var headerExit = false;\n var selectedCell = e.item.selection.range.startContainer;\n selectedCell = (selectedCell.nodeType === 3) ? selectedCell.parentNode : selectedCell;\n var table = closest(selectedCell.parentElement, 'table');\n [].slice.call(table.childNodes).forEach(function (el) {\n if (el.nodeName === 'THEAD') {\n headerExit = true;\n }\n });\n if (table && !headerExit) {\n var cellCount = table.querySelector('tr').childElementCount;\n var colSpanCount = 0;\n for (var i = 0; i < cellCount; i++) {\n colSpanCount = colSpanCount + (parseInt(table.querySelector('tr').children[i].getAttribute('colspan'), 10) || 1);\n }\n var header = table.createTHead();\n var row = header.insertRow(0);\n for (var j = 0; j < colSpanCount; j++) {\n var th = createElement('th');\n th.appendChild(createElement('br'));\n row.appendChild(th);\n }\n }\n else {\n table.deleteTHead();\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.tableVerticalAlign = function (e) {\n if (e.item.subCommand === 'AlignTop') {\n e.item.tableCell.style.verticalAlign = 'top';\n }\n else if (e.item.subCommand === 'AlignMiddle') {\n e.item.tableCell.style.verticalAlign = 'middle';\n }\n else {\n e.item.tableCell.style.verticalAlign = 'bottom';\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.cellMerge = function (e) {\n if (isNOU(this.curTable)) {\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n }\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n if (selectedCells.length < 2) {\n return;\n }\n this.mergeCellContent();\n var minMaxIndexes = this.getSelectedMinMaxIndexes(this.getCorrespondingColumns());\n var firstCell = selectedCells[0];\n var rowSelectedCells = firstCell.parentElement.querySelectorAll('.e-cell-select');\n if (minMaxIndexes.startColumn < minMaxIndexes.endColumn) {\n firstCell.setAttribute('colspan', (minMaxIndexes.endColumn - minMaxIndexes.startColumn + 1).toString());\n }\n if (minMaxIndexes.startRow < minMaxIndexes.endRow) {\n firstCell.setAttribute('rowspan', (minMaxIndexes.endRow - minMaxIndexes.startRow + 1).toString());\n }\n var totalWidth = 0;\n for (var j = rowSelectedCells.length - 1; j >= 0; j--) {\n totalWidth = totalWidth + parseFloat(rowSelectedCells[j].style.width);\n }\n firstCell.style.width = totalWidth + '%';\n for (var i = 1; i <= selectedCells.length - 1; i++) {\n detach(selectedCells[i]);\n }\n for (var i = 0; i < this.curTable.rows.length; i++) {\n if (this.curTable.rows[i].innerHTML === '') {\n detach(this.curTable.rows[i]);\n }\n }\n this.updateRowSpanStyle(minMaxIndexes.startRow, minMaxIndexes.endRow, this.getCorrespondingColumns());\n this.updateColSpanStyle(minMaxIndexes.startColumn, minMaxIndexes.endColumn, this.getCorrespondingColumns());\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (this.parent.nodeSelection.range) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, \n // eslint-disable-next-line\n this.parent.nodeSelection.range.endContainer, 0);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.updateColSpanStyle = function (min, max, elements) {\n var colValue;\n var colIndex;\n var colMin;\n var index = 0;\n var attrValue;\n var count = 0;\n var eleArray = elements;\n //eslint-disable-next-line\n if (min < (max = Math.min(max, eleArray[0].length - 1))) {\n for (colIndex === min; colIndex <= max; colIndex++) {\n // eslint-disable-next-line\n if (!(min < colIndex && eleArray[0][colIndex] === eleArray[0][colIndex - 1]) && 1 < (index =\n Math.min(parseInt(eleArray[0][colIndex].getAttribute('colspan'), 10) || 1, max - min + 1)) &&\n eleArray[0][colIndex] === eleArray[0][colIndex + 1]) {\n for (count = index - 1, colValue = 1; colValue < eleArray.length; colValue++) {\n if (eleArray[colValue][colIndex] !== eleArray[colValue - 1][colIndex]) {\n /* eslint-disable */\n for (colMin = colIndex; colMin < colIndex + index; colMin++) {\n if (1 < (attrValue = parseInt(eleArray[colValue][colMin].getAttribute('colspan'), 10) || 1) &&\n eleArray[colValue][colMin] === eleArray[colValue][colMin + 1]) {\n colMin += count = Math.min(count, attrValue - 1);\n }\n else if (!(count = Math.max(0, count - 1))) {\n break;\n }\n /* eslint-enable */\n }\n }\n if (!count) {\n break;\n }\n }\n }\n }\n if (count) {\n this.updateCellAttribute(eleArray, count, 'colspan', 0, eleArray.length - 1, min, max);\n }\n }\n };\n TableCommand.prototype.updateRowSpanStyle = function (min, max, ele) {\n var rowValue;\n var colIndex;\n var rowMin;\n var index = 0;\n var attrValue;\n var count = 0;\n var eleArray = ele;\n // eslint-disable-next-line\n if (min < (max = Math.min(max, eleArray.length - 1))) {\n for (rowValue = min; rowValue <= max; rowValue++) {\n // eslint-disable-next-line\n if (!(min < rowValue && eleArray[rowValue][0] === eleArray[rowValue - 1][0])\n // eslint-disable-next-line no-cond-assign\n && eleArray[rowValue][0] && 1 < (index = Math.min(parseInt(eleArray[rowValue][0].getAttribute('rowspan'), 10) ||\n 1, max - min + 1)) && eleArray[rowValue][0] === eleArray[rowValue + 1][0]) {\n for (count = index - 1, colIndex = 1; colIndex < eleArray[0].length; colIndex++) {\n if (eleArray[rowValue][colIndex] !== eleArray[rowValue][colIndex - 1]) {\n for (rowMin = rowValue; rowMin < rowValue + index; rowMin++) {\n // eslint-disable-next-line\n if (1 < (attrValue = parseInt(eleArray[rowMin][colIndex].getAttribute('rowspan'), 10) || 1) && eleArray[rowMin][colIndex] === eleArray[rowMin + 1][colIndex]) {\n rowMin += count = Math.min(count, attrValue - 1);\n }\n // eslint-disable-next-line\n else if (!(count = Math.max(0, count - 1))) {\n break;\n }\n }\n if (!count) {\n break;\n }\n }\n }\n }\n }\n if (count) {\n this.updateCellAttribute(eleArray, count, 'rowspan', min, max, 0, eleArray[0].length - 1);\n }\n }\n };\n TableCommand.prototype.updateCellAttribute = function (elements, index, attr, min, max, firstIndex, length) {\n var rowIndex;\n var colIndex;\n var spanCount;\n for (rowIndex = min; rowIndex <= max; rowIndex++) {\n for (colIndex = firstIndex; colIndex <= length; colIndex++) {\n // eslint-disable-next-line\n min < rowIndex && elements[rowIndex][colIndex] === elements[rowIndex - 1][colIndex] ||\n firstIndex < colIndex && elements[rowIndex][colIndex] === elements[rowIndex][colIndex - 1] ||\n 1 < (spanCount = parseInt(elements[rowIndex][colIndex].getAttribute(attr), 10) || 1) &&\n // eslint-disable-next-line max-len\n (1 < spanCount - index ? elements[rowIndex][colIndex].setAttribute(attr, (spanCount - index).toString()) :\n elements[rowIndex][colIndex].removeAttribute(attr));\n }\n }\n };\n TableCommand.prototype.mergeCellContent = function () {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n var innerHtml = selectedCells[0].innerHTML === '
    ' ? '' : selectedCells[0].innerHTML;\n for (var i = 1; i < selectedCells.length; i++) {\n if ('
    ' !== selectedCells[i].innerHTML) {\n innerHtml = innerHtml ? innerHtml + '
    ' + selectedCells[i].innerHTML : innerHtml + selectedCells[i].innerHTML;\n }\n }\n selectedCells[0].innerHTML = innerHtml;\n };\n TableCommand.prototype.getSelectedMinMaxIndexes = function (correspondingCells) {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n if (0 < selectedCells.length) {\n var minRow = correspondingCells.length;\n var maxRow = 0;\n var minCol = correspondingCells[0].length;\n var maxCol = 0;\n for (var i = 0; i < selectedCells.length; i++) {\n var currentRowCol = this.getCorrespondingIndex(selectedCells[i], correspondingCells);\n var targetRowCol = this.FindIndex(currentRowCol[0], currentRowCol[1], correspondingCells);\n minRow = Math.min(currentRowCol[0], minRow);\n maxRow = Math.max(targetRowCol[0], maxRow);\n minCol = Math.min(currentRowCol[1], minCol);\n maxCol = Math.max(targetRowCol[1], maxCol);\n }\n return {\n startRow: minRow,\n endRow: maxRow,\n startColumn: minCol,\n endColumn: maxCol\n };\n }\n return null;\n };\n TableCommand.prototype.HorizontalSplit = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n this.curTable = closest(selectedCell.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n return;\n }\n this.activeCell = this.curTable.querySelector('.e-cell-select');\n var newCell = this.activeCell.cloneNode(true);\n newCell.removeAttribute('class');\n newCell.innerHTML = '
    ';\n var activeCellIndex = this.getCorrespondingIndex(this.activeCell, this.getCorrespondingColumns());\n var correspondingCells = this.getCorrespondingColumns();\n var activeCellRowSpan = this.activeCell.getAttribute('rowspan') ? parseInt(this.activeCell.getAttribute('rowspan'), 10) : 1;\n if (activeCellRowSpan > 1) {\n var avgCount = Math.ceil(activeCellRowSpan / 2);\n // eslint-disable-next-line\n 1 < avgCount ? this.activeCell.setAttribute('rowspan', avgCount.toString()) :\n this.activeCell.removeAttribute('rowspan');\n // eslint-disable-next-line\n 1 < (activeCellRowSpan - avgCount) ? newCell.setAttribute('rowspan', (activeCellRowSpan - avgCount).toString()) : newCell.removeAttribute('rowspan');\n var avgRowIndex = void 0;\n var colIndex = void 0;\n for (avgRowIndex = activeCellIndex[0] + Math.ceil(activeCellRowSpan / 2),\n colIndex = 0 === activeCellIndex[1] ? activeCellIndex[1]\n : activeCellIndex[1] - 1; 0 <= colIndex && (correspondingCells[avgRowIndex][colIndex] ===\n // eslint-disable-next-line max-len\n correspondingCells[avgRowIndex][colIndex - 1] || 0 < avgRowIndex && correspondingCells[avgRowIndex][colIndex]\n === correspondingCells[avgRowIndex - 1][colIndex]);) {\n colIndex--;\n }\n if (colIndex === -1) {\n // eslint-disable-next-line\n this.curTable.rows[avgRowIndex].firstChild ? this.curTable.rows[avgRowIndex].prepend(newCell) : this.curTable.appendChild(newCell);\n }\n else {\n correspondingCells[avgRowIndex][colIndex].insertAdjacentElement('afterend', newCell);\n }\n }\n else {\n var newTrEle = createElement('tr');\n newTrEle.appendChild(newCell);\n var selectedRow = correspondingCells[activeCellIndex[0]];\n for (var j = 0; j <= selectedRow.length - 1; j++) {\n if (selectedRow[j] !== selectedRow[j - 1] && selectedRow[j] !== this.activeCell) {\n selectedRow[j].setAttribute('rowspan', ((parseInt(selectedRow[j].getAttribute('rowspan'), 10) ?\n parseInt(selectedRow[j].getAttribute('rowspan'), 10) : 1) + 1).toString());\n }\n }\n this.activeCell.parentNode.insertAdjacentElement('afterend', newTrEle);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.VerticalSplit = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n this.curTable = closest(selectedCell.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n return;\n }\n this.activeCell = this.curTable.querySelector('.e-cell-select');\n var allRows = this.curTable.rows;\n var newCell = this.activeCell.cloneNode(true);\n newCell.removeAttribute('class');\n newCell.innerHTML = '
    ';\n var avgWidth = parseFloat(this.activeCell.style.width) / 2;\n if (this.activeCell.tagName === 'TH' && isNaN(avgWidth)) {\n var cellCount = this.curTable.querySelector('tr').childElementCount;\n var colSpanCount = 0;\n for (var i = 0; i < cellCount; i++) {\n colSpanCount = colSpanCount + (parseInt(this.curTable.querySelector('tr').children[i].getAttribute('colspan'), 10) || 1);\n }\n avgWidth = parseFloat((((this.activeCell.offsetWidth / 2) / this.curTable.offsetWidth) * 100).toFixed(1));\n }\n var activeCellIndex = this.getCorrespondingIndex(this.activeCell, this.getCorrespondingColumns());\n var correspondingColumns = this.getCorrespondingColumns();\n var activeCellcolSpan = parseInt(this.activeCell.getAttribute('colspan'), 10);\n if (activeCellcolSpan > 1) {\n // eslint-disable-next-line\n 1 < Math.ceil(activeCellcolSpan / 2) ? this.activeCell.setAttribute('colspan', (activeCellcolSpan / 2).toString())\n : this.activeCell.removeAttribute('colspan');\n // eslint-disable-next-line\n 1 < (activeCellcolSpan - activeCellcolSpan / 2) ? newCell.setAttribute('colspan', \n // eslint-disable-next-line\n (activeCellcolSpan - activeCellcolSpan / 2).toString()) : newCell.removeAttribute('colspan');\n }\n else {\n for (var i = 0; i <= allRows.length - 1; i++) {\n if (0 === i || correspondingColumns[i][activeCellIndex[1]] !== correspondingColumns[i - 1][activeCellIndex[1]]) {\n var currentCell = correspondingColumns[i][activeCellIndex[1]];\n if (currentCell !== this.activeCell) {\n currentCell.setAttribute('colspan', ((parseInt(currentCell.getAttribute('colspan'), 10) ?\n parseInt(currentCell.getAttribute('colspan'), 10) : 1) + 1).toString());\n }\n }\n }\n }\n this.activeCell.style.width = avgWidth + '%';\n newCell.style.width = avgWidth + '%';\n this.activeCell.parentNode.insertBefore(newCell, this.activeCell.nextSibling);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.getCorrespondingColumns = function () {\n var elementArray = [];\n // eslint-disable-next-line\n var _this = this;\n var colspan = 0;\n var allRows = _this.curTable.rows;\n for (var i = 0; i <= allRows.length - 1; i++) {\n var ele = allRows[i];\n var index = 0;\n for (var j = 0; j <= ele.children.length - 1; j++) {\n /* eslint-disable */\n var colEle = ele.children[j];\n for (var ele_1 = colEle, colspan_1 = parseInt(ele_1.getAttribute('colspan'), 10) || 1, rowSpan = parseInt(ele_1.getAttribute('rowspan'), 10) || 1, rowIndex = i; rowIndex < i + rowSpan; rowIndex++) {\n for (var colIndex = index; colIndex < index + colspan_1; colIndex++) {\n elementArray[rowIndex] || (elementArray[rowIndex] = []);\n elementArray[rowIndex][colIndex] ? index++ : elementArray[rowIndex][colIndex] = colEle;\n }\n }\n index += colspan;\n }\n /* eslint-enable */\n }\n return elementArray;\n };\n // eslint-disable-next-line\n TableCommand.prototype.FindIndex = function (rowIndex, columnIndex, cells) {\n var nextIndex;\n var nextCol;\n for (nextIndex = rowIndex + 1, nextCol = columnIndex + 1; nextIndex < cells.length;) {\n if (cells[nextIndex][columnIndex] !== cells[rowIndex][columnIndex]) {\n nextIndex--;\n break;\n }\n nextIndex++;\n }\n for (nextIndex === cells.length && nextIndex--; nextCol < cells[rowIndex].length;) {\n if (cells[rowIndex][nextCol] !== cells[rowIndex][columnIndex]) {\n nextCol--;\n break;\n }\n nextCol++;\n }\n return nextCol === cells[rowIndex].length && nextCol--,\n [\n nextIndex,\n nextCol\n ];\n };\n TableCommand.prototype.getCorrespondingIndex = function (cell, allCells) {\n //let value: RowCol = new RowCol();\n for (var i = 0; i < allCells.length; i++) {\n for (var j = 0; j < allCells[i].length; j++) {\n if (allCells[i][j] === cell) {\n return [i, j];\n }\n }\n }\n return [];\n };\n TableCommand.prototype.highlightCells = function (minRow, maxRow, minCol, maxCol, eleArray) {\n var j;\n var k;\n var startCell;\n var endCell;\n var minRowIndex = minRow;\n var maxRowIndex = maxRow;\n var minColIndex = minCol;\n var maxColIndex = maxCol;\n var minMaxValues = new MinMax();\n for (j = minRowIndex; j <= maxRowIndex; j++) {\n /* eslint-disable */\n if ((1 < (parseInt(eleArray[j][minColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][minColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][minColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[j][maxColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][maxColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][maxColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n for (k = minColIndex; k <= maxColIndex; k++) {\n if ((1 < (parseInt(eleArray[minRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[minRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[minRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[maxRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n }\n minMaxValues = minRowIndex === minRow && maxRowIndex === maxRow && minColIndex === minCol && maxColIndex === maxCol ? {\n startRow: minRow,\n endRow: maxRow,\n startColumn: minCol,\n endColumn: maxCol\n } : this.highlightCells(minRowIndex, maxRowIndex, minColIndex, maxColIndex, eleArray);\n }\n return minMaxValues;\n /* eslint-enable */\n };\n TableCommand.prototype.tableMove = function (e) {\n this.activeCell = e.selectNode[0];\n var target = e.event.target;\n var activeCellTag = this.activeCell.tagName;\n var targetCellTag = target.tagName;\n this.curTable = closest(target, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n this.parent.nodeSelection.Clear(this.parent.currentDocument);\n }\n if ((target.tagName !== 'TD' && target.tagName !== 'TH') && activeCellTag !== targetCellTag) {\n return;\n }\n var activeRowIndex = Array.prototype.slice.call((this.activeCell).parentElement.parentElement.children)\n .indexOf((this.activeCell).parentElement);\n var activeColumnIndex = Array.prototype.slice.call((this.activeCell).parentElement.children).indexOf(this.activeCell);\n var targetRowIndex = Array.prototype.slice.call(target.parentElement.parentElement.children)\n .indexOf(target.parentElement);\n var targetColumnIndex = Array.prototype.slice.call(target.parentElement.children).indexOf(target);\n var activeCellList = this.curTable.querySelectorAll('.e-cell-select');\n for (var i = activeCellList.length - 1; i >= 0; i--) {\n if (this.activeCell !== activeCellList[i]) {\n activeCellList[i].classList.remove('e-cell-select');\n }\n }\n if (activeRowIndex === targetRowIndex && activeColumnIndex === targetColumnIndex) {\n return;\n }\n var correspondingCells = this.getCorrespondingColumns();\n var activeIndexes = this.getCorrespondingIndex(this.activeCell, correspondingCells);\n var targetIndexes = this.getCorrespondingIndex(target, correspondingCells);\n var minMaxIndexes = this.highlightCells(Math.min(activeIndexes[0], targetIndexes[0]), Math.max(activeIndexes[0], \n /* eslint-disable */\n targetIndexes[0]), Math.min(activeIndexes[1], targetIndexes[1]), Math.max(activeIndexes[1], targetIndexes[1]), correspondingCells);\n for (var rowIndex = minMaxIndexes.startRow; rowIndex <= minMaxIndexes.endRow; rowIndex++) {\n for (var colIndex = minMaxIndexes.startColumn; colIndex <= minMaxIndexes.endColumn; colIndex++) {\n correspondingCells[rowIndex][colIndex].classList.add('e-cell-select');\n }\n }\n if (this.parent.nodeSelection.range) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, this.parent.nodeSelection.range.endContainer, 0, 0);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, 0);\n }\n };\n ;\n return TableCommand;\n}());\nexport { TableCommand };\nvar MinMax = /** @class */ (function () {\n function MinMax() {\n }\n return MinMax;\n}());\n","/**\n * Is formatted or not.\n *\n * @hidden\n\n */\nvar IsFormatted = /** @class */ (function () {\n function IsFormatted() {\n }\n /**\n * getFormattedNode method\n *\n * @param {Node} node - specifies the node.\n * @param {string} format - specifies the string value.\n * @param {Node} endNode - specifies the end node\n * @returns {Node} - returns the node\n * @hidden\n\n */\n IsFormatted.prototype.getFormattedNode = function (node, format, endNode) {\n var parentNode = this.getFormatParent(node, format, endNode);\n if (parentNode !== null && parentNode !== endNode) {\n return parentNode;\n }\n return null;\n };\n IsFormatted.prototype.getFormatParent = function (node, format, endNode) {\n do {\n node = node.parentNode;\n } while (node && (node !== endNode) && !this.isFormattedNode(node, format));\n return node;\n };\n IsFormatted.prototype.isFormattedNode = function (node, format) {\n switch (format) {\n case 'bold':\n return IsFormatted.isBold(node);\n case 'italic':\n return IsFormatted.isItalic(node);\n case 'underline':\n return IsFormatted.isUnderline(node);\n case 'strikethrough':\n return IsFormatted.isStrikethrough(node);\n case 'superscript':\n return IsFormatted.isSuperscript(node);\n case 'subscript':\n return IsFormatted.isSubscript(node);\n case 'fontcolor':\n return this.isFontColor(node);\n case 'fontname':\n return this.isFontName(node);\n case 'fontsize':\n return this.isFontSize(node);\n case 'backgroundcolor':\n return this.isBackgroundColor(node);\n default:\n return false;\n }\n };\n /**\n * isBold method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isBold = function (node) {\n var validTags = ['strong', 'b'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontWeight === 'bold') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isItalic method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isItalic = function (node) {\n var validTags = ['em', 'i'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontStyle === 'italic') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isUnderline method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isUnderline = function (node) {\n var validTags = ['u'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.textDecoration === 'underline') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isStrikethrough method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isStrikethrough = function (node) {\n var validTags = ['del', 'strike'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.textDecoration === 'line-through') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isSuperscript method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isSuperscript = function (node) {\n var validTags = ['sup'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isSubscript method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n IsFormatted.isSubscript = function (node) {\n var validTags = ['sub'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontColor = function (node) {\n var color = node.style && node.style.color;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n color !== null && color !== '' && color !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isBackgroundColor = function (node) {\n var backColor = node.style && node.style.backgroundColor;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n backColor !== null && backColor !== '' && backColor !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontSize = function (node) {\n var size = node.style && node.style.fontSize;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n size !== null && size !== '' && size !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontName = function (node) {\n var name = node.style && node.style.fontFamily;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n name !== null && name !== '' && name !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n // Get Formatted Node\n IsFormatted.inlineTags = [\n 'a',\n 'abbr',\n 'acronym',\n 'b',\n 'bdo',\n 'big',\n 'cite',\n 'code',\n 'dfn',\n 'em',\n 'font',\n 'i',\n 'kbd',\n 'label',\n 'q',\n 'samp',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'tt',\n 'u',\n 'var',\n 'del'\n ];\n return IsFormatted;\n}());\nexport { IsFormatted };\n","/**\n * `Selection` module is used to handle RTE Selections.\n */\nimport { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport { InsertMethods } from './insert-methods';\nimport { IsFormatted } from './isformatted';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nimport { isNullOrUndefined as isNOU, Browser, closest, detach } from '@syncfusion/ej2-base';\nimport { DOMNode } from './dom-node';\nvar SelectionCommands = /** @class */ (function () {\n function SelectionCommands() {\n }\n /**\n * applyFormat method\n *\n * @param {Document} docElement - specifies the document\n * @param {string} format - specifies the string value\n * @param {Node} endNode - specifies the end node\n * @param {string} enterAction - specifies the enter key action\n * @param {string} value - specifies the string value\n * @param {string} selector - specifies the string\n * @param {FormatPainterValue} painterValues specifies the element created and last child\n * @returns {void}\n * @hidden\n\n */\n SelectionCommands.applyFormat = function (docElement, format, endNode, enterAction, value, selector, painterValues) {\n this.enterAction = enterAction;\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase', 'fontcolor', 'fontname', 'fontsize', 'backgroundcolor'];\n if (validFormats.indexOf(format) > -1 || value === 'formatPainter') {\n if (format === 'backgroundcolor' && value === '') {\n value = 'transparent';\n }\n var domSelection = new NodeSelection();\n var domNode = new DOMNode(endNode, docElement);\n var nodeCutter = new NodeCutter();\n var isFormatted = new IsFormatted();\n var range = domSelection.getRange(docElement);\n var save = domSelection.save(range, docElement);\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n var isCollapsed = false;\n var isFormat = false;\n var isCursor = false;\n var preventRestore = false;\n var isFontStyle = (['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1);\n if (range.collapsed) {\n var currentFormatNode = isFormatted.getFormattedNode(range.startContainer, format, endNode);\n var currentSelector = !isNOU(currentFormatNode) ?\n (currentFormatNode.getAttribute('style') === null ? currentFormatNode.nodeName :\n currentFormatNode.nodeName + '[style=\\'' + currentFormatNode.getAttribute('style') + '\\']') : null;\n if (nodes.length > 0) {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, nodes[0]);\n }\n else if (range.startContainer.nodeType === 3 && ((range.startContainer.parentElement.childElementCount > 0 &&\n range.startOffset > 0 && range.startContainer.parentElement.firstElementChild.tagName.toLowerCase() !== 'br') ||\n !isNOU(currentFormatNode) && currentFormatNode ===\n (range.startContainer.parentElement.closest(currentSelector)) &&\n ((range.startContainer.parentElement.closest(currentSelector)).textContent.replace(\n // eslint-disable-next-line\n new RegExp(String.fromCharCode(8203), 'g'), '').trim().length !== 0))) {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, range.startContainer);\n nodes.push(range.startContainer);\n }\n else {\n var cursorNode = this.insertCursorNode(docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode);\n domSelection.endContainer = domSelection.startContainer = domSelection.getNodeArray(cursorNode, true);\n var childNodes = cursorNode.nodeName === 'BR' && cursorNode.parentNode.childNodes;\n if (!isNOU(childNodes) && childNodes.length === 1 && childNodes[0].nodeName === 'BR' && nodes.length === 0) {\n domSelection.setSelectionText(docElement, range.startContainer, range.endContainer, 0, 0);\n preventRestore = true;\n }\n else {\n domSelection.endOffset = domSelection.startOffset = 1;\n }\n if (cursorNode.nodeName === 'BR' && cursorNode.parentNode.textContent.length === 0) {\n preventRestore = true;\n }\n }\n }\n isCursor = range.collapsed;\n var isSubSup = false;\n for (var index = 0; index < nodes.length; index++) {\n var formatNode = isFormatted.getFormattedNode(nodes[index], format, endNode);\n if (formatNode === null) {\n if (format === 'subscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'superscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n else if (format === 'superscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'subscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n }\n if (index === 0 && formatNode === null) {\n isFormat = true;\n }\n if (formatNode !== null && (!isFormat || isFontStyle)) {\n nodes[index] = this.removeFormat(nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode);\n }\n else {\n nodes[index] = this.insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, painterValues, domNode, endNode);\n }\n domSelection = this.applySelection(nodes, domSelection, nodeCutter, index, isCollapsed);\n }\n if (isIDevice()) {\n setEditFrameFocus(endNode, selector);\n }\n if (!preventRestore) {\n save.restore();\n }\n if (isSubSup) {\n this.applyFormat(docElement, format, endNode, enterAction);\n }\n }\n };\n SelectionCommands.insertCursorNode = function (docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode) {\n var cursorNodes = domSelection.getNodeCollection(range);\n var domNode = new DOMNode(endNode, docElement);\n var cursorFormat = (cursorNodes.length > 0) ?\n (cursorNodes.length > 1 && range.startContainer === range.endContainer) ?\n this.getCursorFormat(isFormatted, cursorNodes, format, endNode) :\n isFormatted.getFormattedNode(cursorNodes[0], format, endNode) : null;\n var cursorNode = null;\n if (cursorFormat) {\n cursorNode = cursorNodes[0];\n if (cursorFormat.firstChild.textContent.charCodeAt(0) === 8203 && cursorFormat.firstChild.nodeType === 3) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var emptySpaceNode = void 0;\n if (cursorFormat.firstChild === cursorNode) {\n cursorNode.textContent = (cursorFormat.parentElement && (domNode.isBlockNode(cursorFormat.parentElement) &&\n cursorFormat.parentElement.textContent.length <= 1 ? cursorFormat.parentElement.childElementCount > 1 :\n cursorFormat.childElementCount === 0) &&\n (cursorFormat.parentElement.textContent.length > 1 ||\n cursorFormat.parentElement.firstChild && cursorFormat.parentElement.firstChild.nodeType === 1) ?\n cursorNode.textContent : cursorNode.textContent.replace(regEx, ''));\n emptySpaceNode = cursorNode;\n }\n else {\n cursorFormat.firstChild.textContent = cursorFormat.firstChild.textContent.replace(regEx, '');\n emptySpaceNode = cursorFormat.firstChild;\n }\n var pointer = void 0;\n if (emptySpaceNode.textContent.length === 0) {\n if (!isNOU(emptySpaceNode.previousSibling)) {\n cursorNode = emptySpaceNode.previousSibling;\n pointer = emptySpaceNode.textContent.length - 1;\n domSelection.setCursorPoint(docElement, emptySpaceNode, pointer);\n }\n else if (!isNOU(emptySpaceNode.parentElement) && emptySpaceNode.parentElement.textContent.length === 0) {\n var brElem = document.createElement('BR');\n emptySpaceNode.parentElement.appendChild(brElem);\n detach(emptySpaceNode);\n cursorNode = brElem;\n domSelection.setCursorPoint(docElement, cursorNode.parentElement, 0);\n }\n }\n }\n if ((['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1)) {\n if (format === 'fontcolor') {\n cursorFormat.style.color = value;\n }\n else if (format === 'fontname') {\n cursorFormat.style.fontFamily = value;\n }\n else if (format === 'fontsize') {\n cursorFormat.style.fontSize = value;\n }\n else {\n cursorFormat.style.backgroundColor = value;\n }\n cursorNode = cursorFormat;\n }\n else {\n InsertMethods.unwrap(cursorFormat);\n }\n }\n else {\n if (cursorNodes.length > 1 && range.startOffset > 0 && (cursorNodes[0].firstElementChild &&\n cursorNodes[0].firstElementChild.tagName.toLowerCase() === 'br')) {\n cursorNodes[0].innerHTML = '';\n }\n if (cursorNodes.length === 1 && range.startOffset === 0 && (cursorNodes[0].nodeName === 'BR' ||\n cursorNodes[0].nextSibling.nodeName === 'BR')) {\n detach(cursorNodes[0].nodeName === '#text' ? cursorNodes[0].nextSibling : cursorNodes[0]);\n }\n cursorNode = this.getInsertNode(docElement, range, format, value).firstChild;\n }\n return cursorNode;\n };\n SelectionCommands.getCursorFormat = function (isFormatted, cursorNodes, format, endNode) {\n var currentNode;\n for (var index = 0; index < cursorNodes.length; index++) {\n currentNode = cursorNodes[index].lastElementChild ?\n cursorNodes[index].lastElementChild : cursorNodes[index];\n }\n return isFormatted.getFormattedNode(currentNode, format, endNode);\n };\n SelectionCommands.removeFormat = function (nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode) {\n var splitNode = null;\n var startText = range.startContainer.nodeName === '#text' ?\n range.startContainer.textContent.substring(range.startOffset, range.startContainer.textContent.length) :\n range.startContainer.textContent;\n var nodeText = nodes[index].textContent;\n if (!(range.startContainer === range.endContainer && range.startOffset === 0\n && range.endOffset === range.startContainer.length)) {\n var nodeIndex = [];\n var cloneNode = nodes[index];\n do {\n nodeIndex.push(domSelection.getIndex(cloneNode));\n cloneNode = cloneNode.parentNode;\n } while (cloneNode && (cloneNode !== formatNode));\n if (nodes[index].nodeName !== 'BR') {\n cloneNode = splitNode = (isCursor && (formatNode.textContent.length - 1) === range.startOffset) ?\n nodeCutter.SplitNode(range, formatNode, true)\n : nodeCutter.GetSpliceNode(range, formatNode);\n }\n if (!isCursor) {\n while (cloneNode && cloneNode.childNodes.length > 0 && ((nodeIndex.length - 1) >= 0)\n && (cloneNode.childNodes.length > nodeIndex[nodeIndex.length - 1])) {\n cloneNode = cloneNode.childNodes[nodeIndex[nodeIndex.length - 1]];\n nodeIndex.pop();\n }\n if (nodes[index].nodeName !== 'BR') {\n if (cloneNode.nodeType === 3 && !(isCursor && cloneNode.nodeValue === '')) {\n nodes[index] = cloneNode;\n }\n else {\n var divNode = document.createElement('div');\n divNode.innerHTML = '​';\n if (cloneNode.nodeType !== 3) {\n cloneNode.insertBefore(divNode.firstChild, cloneNode.firstChild);\n nodes[index] = cloneNode.firstChild;\n }\n else {\n cloneNode.parentNode.insertBefore(divNode.firstChild, cloneNode);\n nodes[index] = cloneNode.previousSibling;\n cloneNode.parentNode.removeChild(cloneNode);\n }\n }\n }\n }\n else {\n var lastNode = splitNode;\n for (; lastNode.firstChild !== null && lastNode.firstChild.nodeType !== 3; null) {\n lastNode = lastNode.firstChild;\n }\n lastNode.innerHTML = '​';\n nodes[index] = lastNode.firstChild;\n }\n }\n else if (isFontStyle && !nodes[index].contains(formatNode) && nodes[index].nodeType === 3 &&\n nodes[index].textContent !== formatNode.textContent) {\n // If the selection is within the format node .\n var isFullNodeSelected = nodes[index].textContent === nodes[index].wholeText;\n var nodeTraverse = nodes[index];\n var styleElement = this.GetFormatNode(format, value);\n // while loop and traverse back until text content does not match with parent text content\n while (nodeTraverse && nodeTraverse.textContent === nodeTraverse.parentElement.textContent) {\n nodeTraverse = nodeTraverse.parentElement;\n }\n if (isFullNodeSelected && formatNode.textContent !== nodeTraverse.textContent) {\n var nodeArray = [];\n var priorityNode = this.getPriorityFormatNode(nodeTraverse, endNode);\n if (priorityNode && priorityNode.textContent === nodeTraverse.textContent) {\n nodeTraverse = priorityNode;\n }\n nodeArray.push(nodeTraverse);\n this.applyStyles(nodeArray, 0, styleElement);\n return nodes[index];\n }\n }\n var fontStyle;\n if (format === 'backgroundcolor') {\n fontStyle = formatNode.style.fontSize;\n }\n var bgStyle;\n if (format === 'fontsize') {\n var bg = closest(nodes[index].parentElement, 'span[style*=' + 'background-color' + ']');\n if (!isNOU(bg)) {\n bgStyle = bg.style.backgroundColor;\n }\n }\n var formatNodeStyles = formatNode.getAttribute('style');\n var formatNodeTagName = formatNode.tagName;\n var child = InsertMethods.unwrap(formatNode);\n if (child[0] && !isFontStyle) {\n var nodeTraverse = child[index] ? child[index] : child[0];\n var textNode = nodeTraverse;\n for (; nodeTraverse && nodeTraverse.parentElement && nodeTraverse.parentElement !== endNode; \n // eslint-disable-next-line\n nodeTraverse = nodeTraverse) {\n var nodeTraverseCondition = void 0;\n if (formatNode.nodeName === 'SPAN') {\n nodeTraverseCondition = nodeTraverse.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase() && nodeTraverse.parentElement.getAttribute('style') === formatNodeStyles;\n }\n else {\n nodeTraverseCondition = nodeTraverse.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase();\n }\n if (nodeTraverse.parentElement && nodeTraverseCondition &&\n (nodeTraverse.parentElement.childElementCount > 1 || range.startOffset > 1)) {\n if (textNode.parentElement && textNode.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase()) {\n if ((range.startOffset === range.endOffset) && textNode.nodeType !== 1 &&\n !isNOU(textNode.textContent) && textNode.parentElement.childElementCount > 1) {\n range.setStart(textNode, 0);\n range.setEnd(textNode, textNode.textContent.length);\n nodeCutter.SplitNode(range, textNode.parentElement, false);\n }\n }\n if (nodeTraverse.parentElement.tagName.toLocaleLowerCase() === 'span') {\n if (formatNode.style.textDecoration === 'underline' &&\n nodeTraverse.parentElement.style.textDecoration !== 'underline') {\n nodeTraverse = nodeTraverse.parentElement;\n continue;\n }\n }\n InsertMethods.unwrap(nodeTraverse.parentElement);\n nodeTraverse = !isNOU(nodeTraverse.parentElement) && !domNode.isBlockNode(nodeTraverse.parentElement) ? textNode :\n nodeTraverse.parentElement;\n }\n else {\n nodeTraverse = nodeTraverse.parentElement;\n }\n }\n }\n if (child.length > 0 && isFontStyle) {\n for (var num = 0; num < child.length; num++) {\n if (child[num].nodeType !== 3 || (child[num].textContent &&\n child[num].textContent.trim().length > 0)) {\n child[num] = InsertMethods.Wrap(child[num], this.GetFormatNode(format, value, formatNodeTagName, formatNodeStyles));\n if (child[num].textContent === startText) {\n if (num === 0) {\n range.setStartBefore(child[num]);\n }\n else if (num === child.length - 1) {\n range.setEndAfter(child[num]);\n }\n }\n }\n }\n var currentNodeElem = nodes[index].parentElement;\n if (!isNOU(fontStyle) && fontStyle !== '') {\n currentNodeElem.style.fontSize = fontStyle;\n }\n if (!isNOU(bgStyle) && bgStyle !== '') {\n currentNodeElem.style.backgroundColor = bgStyle;\n }\n if ((format === 'backgroundcolor' && !isNOU(fontStyle) && fontStyle !== '') &&\n currentNodeElem.parentElement.innerHTML === currentNodeElem.outerHTML) {\n var curParentElem = currentNodeElem.parentElement;\n curParentElem.parentElement.insertBefore(currentNodeElem, curParentElem);\n detach(curParentElem);\n }\n if (format === 'fontsize' || format === 'fontcolor') {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNOU(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n var num = index;\n var liChildContent = '';\n while (num >= 0 && !isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' && liElement.textContent.replace('/\\u200B/g', '').trim().includes(nodes[num].textContent.trim())) {\n liChildContent = ' ' + nodes[num].textContent.trim() + liChildContent;\n num--;\n }\n var isNestedList = false;\n var nestedListCount = 0;\n var isNestedListItem = false;\n if (!isNOU(liElement) && liElement.childNodes) {\n for (var num_1 = 0; num_1 < liElement.childNodes.length; num_1++) {\n if (liElement.childNodes[num_1].nodeName === ('OL' || 'UL')) {\n nestedListCount++;\n isNestedList = true;\n }\n }\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.split('\\u200B').join('').trim() === liChildContent.split('\\u200B').join('').trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n else if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' && isNestedList) {\n if (isNestedList && nestedListCount > 0) {\n for (var num_2 = 0; num_2 < liElement.childNodes.length; num_2++) {\n if (nodes[index].textContent === liElement.childNodes[num_2].textContent && nodes[index].textContent === nodeText && liElement.textContent.replace('/\\u200B/g', '').trim().includes(liChildContent.split('\\u200B').join('').trim())) {\n isNestedListItem = true;\n }\n }\n }\n if (isNestedListItem) {\n for (var num_3 = 0; num_3 < liElement.childNodes.length; num_3++) {\n if (liElement.childNodes[num_3].nodeName === ('OL' || 'UL')) {\n liElement.childNodes[num_3].style.fontSize = 'initial';\n }\n }\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n }\n }\n }\n return nodes[index];\n };\n SelectionCommands.insertFormat = function (docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, painterValues, domNode, endNode) {\n if (!isCursor) {\n if ((formatNode === null && isFormat) || isFontStyle) {\n if (nodes[index].nodeName !== 'BR') {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n nodes[index].textContent = nodeCutter.TrimLineBreak(nodes[index].textContent);\n }\n if (format === 'uppercase' || format === 'lowercase') {\n nodes[index].textContent = (format === 'uppercase') ? nodes[index].textContent.toLocaleUpperCase()\n : nodes[index].textContent.toLocaleLowerCase();\n }\n else if (!(isFontStyle === true && value === '')) {\n var element = this.GetFormatNode(format, value);\n if (value === 'formatPainter' || isFontStyle) {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNOU(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n if (!isNOU(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.trim() === nodes[index].textContent.trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else if (format === 'fontcolor') {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n if (value === 'formatPainter') {\n return this.insertFormatPainterElem(nodes, index, range, nodeCutter, painterValues, domNode);\n }\n var currentNode = nodes[index];\n var priorityNode = this.getPriorityFormatNode(currentNode, endNode);\n // 1. Checking is there any priority node present in the selection range. (Use case for nested styles);\n // 2 Or font style is applied. (Use case not a nested style)\n if (!isNOU(priorityNode) || isFontStyle) {\n var currentFormatNode = isNOU(priorityNode) ? currentNode : priorityNode;\n currentFormatNode = !isNOU(priorityNode) && priorityNode.style.fontSize !== '' ?\n currentFormatNode.firstChild : currentFormatNode;\n if (isNOU(priorityNode) || format === 'fontsize') {\n while (currentFormatNode) {\n var isSameTextContent = currentFormatNode.parentElement.textContent.trim()\n === nodes[index].textContent.trim();\n if (!domNode.isBlockNode(currentFormatNode.parentElement) && isSameTextContent) {\n currentFormatNode = currentFormatNode.parentElement;\n }\n else {\n break;\n }\n }\n }\n var nodeList = [];\n // Since color is different for different themnes, we need to wrap the fontColor over the text node.\n if (format === 'fontcolor') {\n var closestAnchor = closest(nodes[index].parentElement, 'A');\n if (!isNOU(closestAnchor) && closestAnchor.firstChild.textContent.trim()\n === nodes[index].textContent.trim()) {\n currentFormatNode = nodes[index];\n }\n }\n if (nodes[index].textContent.trim() !== currentFormatNode.textContent.trim()) {\n currentFormatNode = nodes[index];\n }\n nodeList[0] = currentFormatNode;\n this.applyStyles(nodeList, 0, element);\n }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\n }\n }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\n }\n }\n }\n else {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n }\n }\n else {\n if (format !== 'uppercase' && format !== 'lowercase') {\n var element = this.getInsertNode(docElement, range, format, value);\n nodes[index] = element.firstChild;\n nodeCutter.position = 1;\n }\n else {\n nodeCutter.position = range.startOffset;\n }\n }\n return nodes[index];\n };\n SelectionCommands.applyStyles = function (nodes, index, element) {\n if (!(nodes[index].nodeName === 'BR' && this.enterAction === 'BR')) {\n nodes[index] = (index === (nodes.length - 1)) || nodes[index].nodeName === 'BR' ?\n InsertMethods.Wrap(nodes[index], element)\n : InsertMethods.WrapBefore(nodes[index], element, true);\n nodes[index] = this.getChildNode(nodes[index], element);\n }\n return nodes[index];\n };\n SelectionCommands.getPriorityFormatNode = function (node, endNode) {\n var isFormatted = new IsFormatted();\n var fontSizeNode = isFormatted.getFormattedNode(node, 'fontsize', endNode);\n var fontColorNode;\n var backgroundColorNode;\n var fontNameNode;\n if (isNOU(fontSizeNode)) {\n backgroundColorNode = isFormatted.getFormattedNode(node, 'backgroundcolor', endNode);\n if (isNOU(backgroundColorNode)) {\n fontNameNode = isFormatted.getFormattedNode(node, 'fontname', endNode);\n if (isNOU(fontNameNode)) {\n fontColorNode = isFormatted.getFormattedNode(node, 'fontcolor', endNode);\n if (isNOU(fontColorNode)) {\n return null;\n }\n else {\n return fontColorNode;\n }\n }\n else {\n return fontNameNode;\n }\n }\n else {\n return backgroundColorNode;\n }\n }\n else {\n return fontSizeNode;\n }\n };\n SelectionCommands.getInsertNode = function (docElement, range, format, value) {\n var element = this.GetFormatNode(format, value);\n element.innerHTML = '​';\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(element);\n range.insertNode(frag);\n }\n else {\n range.insertNode(element);\n }\n return element;\n };\n SelectionCommands.getChildNode = function (node, element) {\n if (node === undefined || node === null) {\n element.innerHTML = '​';\n node = element.firstChild;\n }\n return node;\n };\n SelectionCommands.applySelection = function (nodes, domSelection, nodeCutter, index, isCollapsed) {\n if (nodes.length === 1 && !isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = 0;\n domSelection.endOffset = nodes[index].textContent.length;\n }\n else if (nodes.length === 1 && isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = nodeCutter.position;\n domSelection.endOffset = nodeCutter.position;\n }\n else if (index === 0) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.startOffset = 0;\n }\n else if (index === nodes.length - 1) {\n domSelection.endContainer = domSelection.getNodeArray(nodes[index], false);\n domSelection.endOffset = nodes[index].textContent.length;\n }\n return domSelection;\n };\n SelectionCommands.GetFormatNode = function (format, value, tagName, styles) {\n var node;\n switch (format) {\n case 'bold':\n return document.createElement('strong');\n case 'italic':\n return document.createElement('em');\n case 'underline':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'underline';\n return node;\n case 'strikethrough':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'line-through';\n return node;\n case 'superscript':\n return document.createElement('sup');\n case 'subscript':\n return document.createElement('sub');\n case 'fontcolor':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.color = value;\n node.style.textDecoration = 'inherit';\n return node;\n case 'fontname':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontFamily = value;\n return node;\n case 'fontsize':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontSize = value;\n return node;\n default:\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.backgroundColor = value;\n return node;\n }\n };\n SelectionCommands.updateStyles = function (ele, tag, styles) {\n if (styles !== null && tag === 'SPAN') {\n ele.setAttribute('style', styles);\n }\n };\n // Below function is used to insert the element created by the format painter plugin.\n SelectionCommands.insertFormatPainterElem = function (nodes, index, range, nodeCutter, painterValues, domNode) {\n var parent = nodes[index].parentElement;\n if (!domNode.isBlockNode(parent)) {\n // The below code is used to remove the already present inline style from the text node.\n while (parent.textContent.trim() === parent.parentElement.textContent.trim() && !domNode.isBlockNode(parent.parentElement)) {\n parent = parent.parentElement;\n }\n if (parent.textContent.trim() !== nodes[index].textContent.trim()) {\n nodeCutter.SplitNode(range, parent, true);\n var childELemList = nodes[index].parentElement.childNodes;\n for (var i = 0; i < childELemList.length; i++) {\n if (childELemList[i].textContent.trim() === nodes[i].textContent.trim()) {\n parent.parentNode.insertBefore(childELemList[i], parent);\n break;\n }\n }\n var blockChildNodes = parent.parentElement.childNodes;\n for (var k = 0; k < blockChildNodes.length; k++) {\n if (blockChildNodes[k].textContent.trim() === '' || blockChildNodes[k].textContent.length === 0) {\n detach(blockChildNodes[k]);\n }\n }\n }\n else {\n InsertMethods.unwrap(parent);\n }\n }\n var elem = painterValues.element;\n if (!isNOU(elem)) {\n // Step 1: Cloning the element that is created by format painter.\n // Step 2: Finding the last child of the nested elememt using the paintervalues.lastchild nodename\n // Step 3: Assigning the nodes[index] text content to the last child element.\n // Step 4: Wrapping the cloned element with the nodes[index]\n var clonedElement = elem.cloneNode(true);\n var elemList = clonedElement.querySelectorAll(painterValues.lastChild.nodeName);\n var lastElement = void 0;\n if (elemList.length > 0) {\n lastElement = elemList[elemList.length - 1];\n }\n else {\n if (!isNOU(clonedElement) && clonedElement.nodeName === painterValues.lastChild.nodeName) {\n lastElement = clonedElement;\n }\n }\n lastElement.textContent = nodes[index].textContent;\n var lastChild = lastElement.childNodes[0];\n nodes[index] = InsertMethods.Wrap(nodes[index], clonedElement);\n nodes[index].textContent = '';\n nodes[index] = lastChild;\n }\n return nodes[index];\n };\n SelectionCommands.enterAction = 'P';\n return SelectionCommands;\n}());\nexport { SelectionCommands };\n","import * as CONSTANT from './../base/constant';\nimport { SelectionCommands } from './selection-commands';\nimport * as EVENTS from './../../common/constant';\n/**\n * Selection EXEC internal component\n *\n * @hidden\n\n */\nvar SelectionBasedExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function SelectionBasedExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n SelectionBasedExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.SELECTION_TYPE, this.applySelection, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDownHandler, this);\n };\n SelectionBasedExec.prototype.keyDownHandler = function (e) {\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase'];\n if (e.event.ctrlKey && validFormats.indexOf(e.event.action) > -1) {\n e.event.preventDefault();\n SelectionCommands.applyFormat(this.parent.currentDocument, e.event.action, this.parent.editableElement, e.enterAction);\n this.callBack(e, e.event.action);\n }\n };\n SelectionBasedExec.prototype.applySelection = function (e) {\n SelectionCommands.applyFormat(this.parent.currentDocument, e.subCommand.toLocaleLowerCase(), this.parent.editableElement, e.enterAction, e.value, e.selector);\n this.callBack(e, e.subCommand);\n };\n SelectionBasedExec.prototype.callBack = function (event, action) {\n if (event.callBack) {\n event.callBack({\n requestType: action,\n event: event.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return SelectionBasedExec;\n}());\nexport { SelectionBasedExec };\n","import * as CONSTANT from './../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Selection EXEC internal component\n *\n * @hidden\n\n */\nvar InsertHtmlExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - sepcifies the parent element\n * @hidden\n\n */\n function InsertHtmlExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n InsertHtmlExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INSERTHTML_TYPE, this.applyHtml, this);\n };\n InsertHtmlExec.prototype.applyHtml = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.value, this.parent.editableElement, true, e.enterAction);\n if (e.subCommand === 'pasteCleanup') {\n var pastedElements = this.parent.editableElement.querySelectorAll('.pasteContent_RTE');\n var allPastedElements = [].slice.call(pastedElements);\n var imgElements = this.parent.editableElement.querySelectorAll('.pasteContent_Img');\n var allImgElm = [].slice.call(imgElements);\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n elements: allPastedElements,\n imgElem: allImgElm\n });\n }\n else {\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n }\n };\n return InsertHtmlExec;\n}());\nexport { InsertHtmlExec };\n","/**\n * `Clear Format` module is used to handle Clear Format.\n */\nimport { closest } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/index';\nimport { NodeCutter } from './nodecutter';\nimport { DOMNode } from './dom-node';\nimport { InsertMethods } from './insert-methods';\nimport { IsFormatted } from './isformatted';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\nvar ClearFormat = /** @class */ (function () {\n function ClearFormat() {\n }\n /**\n * clear method\n *\n * @param {Document} docElement - specifies the document element.\n * @param {Node} endNode - specifies the end node\n * @param {string} enterAction - specifies the enter key action\n * @param {string} selector - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n ClearFormat.clear = function (docElement, endNode, enterAction, selector, command) {\n this.domNode = new DOMNode(endNode, docElement);\n this.defaultTag = enterAction === 'P' ? this.defaultTag : 'div';\n var nodeSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = nodeSelection.getRange(docElement);\n var nodes = range.collapsed ? nodeSelection.getSelectionNodeCollection(range) :\n nodeSelection.getSelectionNodeCollectionBr(range);\n var save = nodeSelection.save(range, docElement);\n var cursorRange = false;\n if (range.collapsed && command !== 'ClearFormat') {\n cursorRange = true;\n range = nodeCutter.GetCursorRange(docElement, range, nodes[0]);\n }\n var isCollapsed = range.collapsed;\n if (!isCollapsed) {\n var preNode = void 0;\n if (nodes.length > 0 && nodes[0].nodeName === 'BR' && closest(nodes[0], 'table')) {\n preNode = nodeCutter.GetSpliceNode(range, closest(nodes[0], 'table'));\n }\n else {\n preNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length > 1 && nodes[0].nodeName === 'IMG' ? 1 : 0]);\n }\n if (nodes.length === 1) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n }\n else if (nodes.length > 1) {\n var i = 1;\n var lastText = nodes[nodes.length - i];\n while (nodes.length <= i && nodes[nodes.length - i].nodeName === 'BR') {\n i++;\n lastText = nodes[nodes.length - i];\n }\n var lasNode = nodeCutter.GetSpliceNode(range, lastText);\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n }\n var exactNodes = nodeSelection.getNodeCollection(range);\n var cloneSelectNodes = exactNodes.slice();\n this.clearInlines(nodeSelection.getSelectionNodes(cloneSelectNodes), cloneSelectNodes, nodeSelection.getRange(docElement), nodeCutter, endNode);\n this.reSelection(docElement, save, exactNodes);\n range = nodeSelection.getRange(docElement);\n exactNodes = nodeSelection.getNodeCollection(range);\n var cloneParentNodes = exactNodes.slice();\n this.clearBlocks(docElement, cloneParentNodes, endNode, nodeCutter, nodeSelection);\n if (isIDevice()) {\n setEditFrameFocus(endNode, selector);\n }\n this.reSelection(docElement, save, exactNodes);\n }\n if (cursorRange) {\n nodeSelection.setCursorPoint(docElement, range.endContainer, range.endOffset);\n }\n };\n ClearFormat.reSelection = function (docElement, save, exactNodes) {\n var selectionNodes = save.getInsertNodes(exactNodes);\n save.startContainer = save.getNodeArray(selectionNodes[0], true, docElement);\n save.startOffset = 0;\n save.endContainer = save.getNodeArray(selectionNodes[selectionNodes.length - 1], false, docElement);\n var endIndexNode = selectionNodes[selectionNodes.length - 1];\n save.endOffset = (endIndexNode.nodeType === 3) ? endIndexNode.textContent.length\n : endIndexNode.childNodes.length;\n save.restore();\n };\n ClearFormat.clearBlocks = function (docElement, nodes, endNode, nodeCutter, nodeSelection) {\n var parentNodes = [];\n for (var index = 0; index < nodes.length; index++) {\n if (this.BLOCK_TAGS.indexOf(nodes[index].nodeName.toLocaleLowerCase()) > -1\n && parentNodes.indexOf(nodes[index]) === -1) {\n parentNodes.push(nodes[index]);\n }\n else if ((this.BLOCK_TAGS.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1)\n && parentNodes.indexOf(nodes[index].parentNode) === -1\n && endNode !== nodes[index].parentNode) {\n parentNodes.push(nodes[index].parentNode);\n }\n }\n parentNodes = this.spliceParent(parentNodes, nodes)[0];\n parentNodes = this.removeParent(parentNodes);\n this.unWrap(docElement, parentNodes, nodeCutter, nodeSelection);\n };\n ClearFormat.spliceParent = function (parentNodes, nodes) {\n for (var index1 = 0; index1 < parentNodes.length; index1++) {\n var len = parentNodes[index1].childNodes.length;\n for (var index2 = 0; index2 < len; index2++) {\n if ((nodes.indexOf(parentNodes[index1].childNodes[index2]) > 0)\n && (parentNodes[index1].childNodes[index2].childNodes.length > 0)) {\n nodes = this.spliceParent([parentNodes[index1].childNodes[index2]], nodes)[1];\n }\n if ((nodes.indexOf(parentNodes[index1].childNodes[index2]) <= -1) &&\n (parentNodes[index1].childNodes[index2].textContent.trim() !== '')) {\n for (var index3 = 0; index3 < len; index3++) {\n if (nodes.indexOf(parentNodes[index1].childNodes[index3]) > -1) {\n nodes.splice(nodes.indexOf(parentNodes[index1].childNodes[index3]), 1);\n }\n }\n index2 = parentNodes[index1].childNodes.length;\n var parentIndex = parentNodes.indexOf(parentNodes[index1].parentNode);\n var nodeIndex = nodes.indexOf(parentNodes[index1].parentNode);\n if (parentIndex > -1) {\n parentNodes.splice(parentIndex, 1);\n }\n if (nodeIndex > -1) {\n nodes.splice(nodeIndex, 1);\n }\n var elementIndex = nodes.indexOf(parentNodes[index1]);\n if (elementIndex > -1) {\n nodes.splice(elementIndex, 1);\n }\n parentNodes.splice(index1, 1);\n index1--;\n }\n }\n }\n return [parentNodes, nodes];\n };\n ClearFormat.removeChild = function (parentNodes, parentNode) {\n var count = parentNode.childNodes.length;\n if (count > 0) {\n for (var index = 0; index < count; index++) {\n if (parentNodes.indexOf(parentNode.childNodes[index]) > -1) {\n parentNodes = this.removeChild(parentNodes, parentNode.childNodes[index]);\n parentNodes.splice(parentNodes.indexOf(parentNode.childNodes[index]), 1);\n }\n }\n }\n return parentNodes;\n };\n ClearFormat.removeParent = function (parentNodes) {\n for (var index = 0; index < parentNodes.length; index++) {\n if (parentNodes.indexOf(parentNodes[index].parentNode) > -1) {\n parentNodes = this.removeChild(parentNodes, parentNodes[index]);\n parentNodes.splice(index, 1);\n index--;\n }\n }\n return parentNodes;\n };\n ClearFormat.unWrap = function (docElement, parentNodes, nodeCutter, nodeSelection) {\n for (var index1 = 0; index1 < parentNodes.length; index1++) {\n if (this.NONVALID_TAGS.indexOf(parentNodes[index1].nodeName.toLowerCase()) > -1\n && parentNodes[index1].parentNode\n && this.NONVALID_PARENT_TAGS.indexOf(parentNodes[index1].parentNode.nodeName.toLowerCase()) > -1) {\n nodeSelection.setSelectionText(docElement, parentNodes[index1], parentNodes[index1], 0, parentNodes[index1].childNodes.length);\n InsertMethods.unwrap(nodeCutter.GetSpliceNode(nodeSelection.getRange(docElement), parentNodes[index1].parentNode));\n }\n if (parentNodes[index1].nodeName.toLocaleLowerCase() !== 'p') {\n if (this.NONVALID_PARENT_TAGS.indexOf(parentNodes[index1].nodeName.toLowerCase()) < 0\n && parentNodes[index1].parentNode.nodeName.toLocaleLowerCase() !== 'p'\n && !((parentNodes[index1].nodeName.toLocaleLowerCase() === 'blockquote'\n || parentNodes[index1].nodeName.toLocaleLowerCase() === 'li')\n && this.IGNORE_PARENT_TAGS.indexOf(parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase()) > -1)\n && !(parentNodes[index1].childNodes.length === 1\n && parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase() === 'p')) {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\n }\n var childNodes = InsertMethods.unwrap(parentNodes[index1]);\n if (childNodes.length === 1\n && childNodes[0].parentNode.nodeName.toLocaleLowerCase() === 'p') {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\n InsertMethods.unwrap(parentNodes[index1]);\n }\n for (var index2 = 0; index2 < childNodes.length; index2++) {\n if (this.NONVALID_TAGS.indexOf(childNodes[index2].nodeName.toLowerCase()) > -1) {\n this.unWrap(docElement, [childNodes[index2]], nodeCutter, nodeSelection);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].nodeName.toLocaleLowerCase() !== 'p') {\n var blockNodes = this.removeParent([childNodes[index2]]);\n this.unWrap(docElement, blockNodes, nodeCutter, nodeSelection);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].parentNode.nodeName.toLocaleLowerCase() ===\n childNodes[index2].nodeName.toLocaleLowerCase()) {\n InsertMethods.unwrap(childNodes[index2]);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].nodeName.toLocaleLowerCase() === 'p') {\n InsertMethods.Wrap(childNodes[index2], docElement.createElement(this.defaultTag));\n InsertMethods.unwrap(childNodes[index2]);\n }\n }\n }\n else {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\n InsertMethods.unwrap(parentNodes[index1]);\n }\n }\n };\n ClearFormat.clearInlines = function (textNodes, nodes, range, nodeCutter, \n // eslint-disable-next-line\n endNode) {\n for (var index = 0; index < textNodes.length; index++) {\n var currentInlineNode = textNodes[index];\n var currentNode = void 0;\n while (!this.domNode.isBlockNode(currentInlineNode) &&\n (currentInlineNode.parentElement && !currentInlineNode.parentElement.classList.contains('e-img-inner'))) {\n currentNode = currentInlineNode;\n currentInlineNode = currentInlineNode.parentElement;\n }\n if (currentNode &&\n IsFormatted.inlineTags.indexOf(currentNode.nodeName.toLocaleLowerCase()) > -1) {\n nodeCutter.GetSpliceNode(range, currentNode);\n this.removeInlineParent(currentNode);\n }\n }\n };\n ClearFormat.removeInlineParent = function (textNodes) {\n var nodes = InsertMethods.unwrap(textNodes);\n for (var index = 0; index < nodes.length; index++) {\n if (nodes[index].parentNode.childNodes.length === 1 && !nodes[index].parentNode.classList.contains('e-img-inner')\n && IsFormatted.inlineTags.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1) {\n this.removeInlineParent(nodes[index].parentNode);\n }\n else if (IsFormatted.inlineTags.indexOf(nodes[index].nodeName.toLocaleLowerCase()) > -1) {\n this.removeInlineParent(nodes[index]);\n }\n }\n };\n ClearFormat.BLOCK_TAGS = ['address', 'article', 'aside', 'blockquote',\n 'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'li', 'main', 'nav',\n 'noscript', 'ol', 'p', 'pre', 'section', 'ul'];\n ClearFormat.NONVALID_PARENT_TAGS = ['thead', 'tbody', 'ul', 'ol', 'table', 'tfoot', 'tr'];\n ClearFormat.IGNORE_PARENT_TAGS = ['ul', 'ol', 'table'];\n ClearFormat.NONVALID_TAGS = ['thead', 'tbody', 'figcaption', 'td', 'tr', 'th', 'tfoot', 'figcaption', 'li'];\n ClearFormat.defaultTag = 'p';\n return ClearFormat;\n}());\nexport { ClearFormat };\n","import * as CONSTANT from './../base/constant';\nimport { ClearFormat } from './clearformat';\nimport * as EVENTS from './../../common/constant';\n/**\n * Clear Format EXEC internal component\n *\n * @hidden\n\n */\nvar ClearFormatExec = /** @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @returns {void}\n * @hidden\n\n */\n function ClearFormatExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ClearFormatExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.CLEAR_TYPE, this.applyClear, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n ClearFormatExec.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'clear-format':\n this.applyClear({ subCommand: 'ClearFormat', callBack: e.callBack, enterAction: e.enterAction });\n e.event.preventDefault();\n break;\n }\n };\n ClearFormatExec.prototype.applyClear = function (e) {\n if (e.subCommand === 'ClearFormat') {\n ClearFormat.clear(this.parent.currentDocument, this.parent.editableElement, e.enterAction, e.selector, e.subCommand);\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n event: e.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n }\n };\n return ClearFormatExec;\n}());\nexport { ClearFormatExec };\n","import { debounce, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { NodeSelection } from './../../selection/selection';\nimport * as EVENTS from './../../common/constant';\nimport { isIDevice, setEditFrameFocus } from '../../common/util';\n/**\n * `Undo` module is used to handle undo actions.\n */\nvar UndoRedoManager = /** @class */ (function () {\n function UndoRedoManager(parent, options) {\n this.undoRedoStack = [];\n this.parent = parent;\n this.undoRedoSteps = !isNullOrUndefined(options) ? options.undoRedoSteps : 30;\n this.undoRedoTimer = !isNullOrUndefined(options) ? options.undoRedoTimer : 300;\n this.addEventListener();\n }\n UndoRedoManager.prototype.addEventListener = function () {\n var debounceListener = debounce(this.keyUp, this.undoRedoTimer);\n this.parent.observer.on(EVENTS.KEY_UP_HANDLER, debounceListener, this);\n this.parent.observer.on(EVENTS.KEY_DOWN_HANDLER, this.keyDown, this);\n this.parent.observer.on(EVENTS.ACTION, this.onAction, this);\n this.parent.observer.on(EVENTS.MODEL_CHANGED_PLUGIN, this.onPropertyChanged, this);\n };\n UndoRedoManager.prototype.onPropertyChanged = function (props) {\n for (var _i = 0, _a = Object.keys(props.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'undoRedoSteps':\n this.undoRedoSteps = props.newProp.undoRedoSteps;\n break;\n case 'undoRedoTimer':\n this.undoRedoTimer = props.newProp.undoRedoTimer;\n break;\n }\n }\n };\n UndoRedoManager.prototype.removeEventListener = function () {\n this.parent.observer.off(EVENTS.KEY_UP_HANDLER, this.keyUp);\n this.parent.observer.off(EVENTS.KEY_DOWN_HANDLER, this.keyDown);\n this.parent.observer.off(EVENTS.ACTION, this.onAction);\n };\n /**\n * onAction method\n *\n * @param {IHtmlSubCommands} e - specifies the sub command\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.onAction = function (e) {\n if (e.subCommand === 'Undo') {\n this.undo(e);\n }\n else {\n this.redo(e);\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.destroy = function () {\n this.removeEventListener();\n };\n UndoRedoManager.prototype.keyDown = function (e) {\n var event = e.event;\n // eslint-disable-next-line\n var proxy = this;\n switch (event.action) {\n case 'undo':\n event.preventDefault();\n proxy.undo(e);\n break;\n case 'redo':\n event.preventDefault();\n proxy.redo(e);\n break;\n }\n };\n UndoRedoManager.prototype.keyUp = function (e) {\n if (e.event.keyCode !== 17 && !e.event.ctrlKey) {\n this.saveData(e);\n }\n };\n /**\n * RTE collection stored html format.\n *\n * @function saveData\n * @param {KeyboardEvent} e - specifies the keyboard event\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.saveData = function (e) {\n var range = new NodeSelection().getRange(this.parent.currentDocument);\n var currentContainer = this.parent.editableElement === range.startContainer.parentElement ?\n range.startContainer.parentElement : range.startContainer;\n for (var i = currentContainer.childNodes.length - 1; i >= 0; i--) {\n if (!isNullOrUndefined(currentContainer.childNodes[i]) && currentContainer.childNodes[i].nodeName === '#text' &&\n currentContainer.childNodes[i].textContent.length === 0 && currentContainer.childNodes[i].nodeName !== 'IMG' &&\n currentContainer.childNodes[i].nodeName !== 'BR' && currentContainer.childNodes[i].nodeName && 'HR') {\n detach(currentContainer.childNodes[i]);\n }\n }\n range = new NodeSelection().getRange(this.parent.currentDocument);\n var save = new NodeSelection().save(range, this.parent.currentDocument);\n var htmlText = this.parent.editableElement.innerHTML;\n var changEle = { text: htmlText, range: save };\n if (this.undoRedoStack.length >= this.steps) {\n this.undoRedoStack = this.undoRedoStack.slice(0, this.steps + 1);\n }\n if (this.undoRedoStack.length > 1 && (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.collapsed === range.collapsed)\n && (this.undoRedoStack[this.undoRedoStack.length - 1].range.startOffset === save.range.startOffset) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].range.endOffset === save.range.endOffset) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.startContainer === save.range.startContainer) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].text.trim() === changEle.text.trim())) {\n return;\n }\n this.undoRedoStack.push(changEle);\n this.steps = this.undoRedoStack.length - 1;\n if (this.steps > this.undoRedoSteps) {\n this.undoRedoStack.shift();\n this.steps--;\n }\n if (e && e.callBack) {\n e.callBack();\n }\n };\n /**\n * Undo the editable text.\n *\n * @function undo\n * @param {IHtmlSubCommands} e - specifies the sub commands\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.undo = function (e) {\n if (this.steps > 0) {\n var range = this.undoRedoStack[this.steps - 1].range;\n var removedContent = this.undoRedoStack[this.steps - 1].text;\n this.parent.editableElement.innerHTML = removedContent;\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n range.restore();\n this.steps--;\n if (e.callBack) {\n e.callBack({\n requestType: 'Undo',\n editorMode: 'HTML',\n range: range,\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument),\n event: e.event\n });\n }\n }\n };\n /**\n * Redo the editable text.\n *\n * @param {IHtmlSubCommands} e - specifies the sub commands\n * @function redo\n * @returns {void}\n * @hidden\n\n */\n UndoRedoManager.prototype.redo = function (e) {\n if (this.undoRedoStack[this.steps + 1] != null) {\n var range = this.undoRedoStack[this.steps + 1].range;\n this.parent.editableElement.innerHTML = this.undoRedoStack[this.steps + 1].text;\n this.parent.editableElement.focus();\n if (isIDevice()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n range.restore();\n this.steps++;\n if (e.callBack) {\n e.callBack({\n requestType: 'Redo',\n editorMode: 'HTML',\n range: range,\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument),\n event: e.event\n });\n }\n }\n };\n /**\n * getUndoStatus method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n\n */\n UndoRedoManager.prototype.getUndoStatus = function () {\n var status = { undo: false, redo: false };\n if (this.steps > 0) {\n status.undo = true;\n }\n if (this.undoRedoStack[this.steps + 1] != null) {\n status.redo = true;\n }\n return status;\n };\n return UndoRedoManager;\n}());\nexport { UndoRedoManager };\n","import * as EVENTS from '../../common/constant';\nimport { createElement, isNullOrUndefined as isNOU, detach } from '@syncfusion/ej2-base';\n/**\n * PasteCleanup for MsWord content\n *\n * @hidden\n\n */\nvar MsWordPaste = /** @class */ (function () {\n function MsWordPaste(parent) {\n this.olData = [\n 'decimal',\n 'lower-alpha',\n 'lower-roman',\n 'upper-alpha',\n 'upper-roman',\n 'lower-greek'\n ];\n this.ulData = [\n 'disc',\n 'square',\n 'circle',\n 'disc',\n 'square',\n 'circle'\n ];\n this.ignorableNodes = ['A', 'APPLET', 'B', 'BLOCKQUOTE', 'BR',\n 'BUTTON', 'CENTER', 'CODE', 'COL', 'COLGROUP', 'DD', 'DEL', 'DFN', 'DIR', 'DIV',\n 'DL', 'DT', 'EM', 'FIELDSET', 'FONT', 'FORM', 'FRAME', 'FRAMESET', 'H1', 'H2',\n 'H3', 'H4', 'H5', 'H6', 'HR', 'I', 'IMG', 'IFRAME', 'INPUT', 'INS', 'LABEL',\n 'LI', 'OL', 'OPTION', 'P', 'PARAM', 'PRE', 'Q', 'S', 'SELECT', 'SPAN', 'STRIKE',\n 'STRONG', 'SUB', 'SUP', 'TABLE', 'TBODY', 'TD', 'TEXTAREA', 'TFOOT', 'TH',\n 'THEAD', 'TITLE', 'TR', 'TT', 'U', 'UL'];\n this.blockNode = ['div', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n 'address', 'blockquote', 'button', 'center', 'dd', 'dir', 'dl', 'dt', 'fieldset',\n 'frameset', 'hr', 'iframe', 'isindex', 'li', 'map', 'menu', 'noframes', 'noscript',\n 'object', 'ol', 'pre', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'ul',\n 'header', 'article', 'nav', 'footer', 'section', 'aside', 'main', 'figure', 'figcaption'];\n this.borderStyle = ['border-top', 'border-right', 'border-bottom', 'border-left'];\n this.removableElements = ['o:p', 'style'];\n this.listContents = [];\n this.parent = parent;\n this.addEventListener();\n }\n MsWordPaste.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.MS_WORD_CLEANUP_PLUGIN, this.wordCleanup, this);\n };\n MsWordPaste.prototype.wordCleanup = function (e) {\n var wordPasteStyleConfig = !isNOU(e.allowedStylePropertiesArray) ? e.allowedStylePropertiesArray : [];\n var listNodes = [];\n var tempHTMLContent = e.args.clipboardData.getData('text/HTML');\n var rtfData = e.args.clipboardData.getData('text/rtf');\n var elm = createElement('p');\n elm.setAttribute('id', 'MSWord-Content');\n elm.innerHTML = tempHTMLContent;\n var patern = /class='?Mso|style='[^ ]*\\bmso-/i;\n var patern2 = /class=\"?Mso|style=\"[^ ]*\\bmso-/i;\n var patern3 = /(class=\"?Mso|class='?Mso|class=\"?Xl|class='?Xl|class=Xl|style=\"[^\"]*\\bmso-|style='[^']*\\bmso-|w:WordDocument)/gi;\n var pattern4 = /style='mso-width-source:/i;\n if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||\n pattern4.test(tempHTMLContent)) {\n this.imageConversion(elm, rtfData);\n tempHTMLContent = tempHTMLContent.replace(/]+>/i, '');\n this.addListClass(elm);\n listNodes = this.cleanUp(elm, listNodes);\n if (!isNOU(listNodes[0]) && listNodes[0].parentElement.tagName !== 'UL' &&\n listNodes[0].parentElement.tagName !== 'OL') {\n this.listConverter(listNodes);\n }\n this.styleCorrection(elm, wordPasteStyleConfig);\n this.removingComments(elm);\n this.removeUnwantedElements(elm);\n this.removeEmptyElements(elm);\n this.breakLineAddition(elm);\n this.removeClassName(elm);\n if (pattern4.test(tempHTMLContent)) {\n this.addTableBorderClass(elm);\n }\n // Removing the margin for list items\n var liChildren = elm.querySelectorAll('li');\n if (liChildren.length > 0) {\n for (var i = 0; i < liChildren.length; i++) {\n if (!isNOU(liChildren[i].style.marginLeft)) {\n liChildren[i].style.marginLeft = '';\n }\n }\n }\n e.callBack(elm.innerHTML);\n }\n else {\n e.callBack(elm.innerHTML);\n }\n };\n MsWordPaste.prototype.addListClass = function (elm) {\n var allNodes = elm.querySelectorAll('*');\n for (var index = 0; index < allNodes.length; index++) {\n if (!isNOU(allNodes[index].getAttribute('style')) && allNodes[index].getAttribute('style').replace(/ /g, '').replace('\\n', '').indexOf('mso-list:l') >= 0 &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') === -1 && allNodes[index].tagName.charAt(0) !== 'H') {\n allNodes[index].classList.add('msolistparagraph');\n }\n }\n };\n MsWordPaste.prototype.addTableBorderClass = function (elm) {\n var allTableElm = elm.querySelectorAll('table');\n var hasTableBorder = false;\n for (var i = 0; i < allTableElm.length; i++) {\n for (var j = 0; j < this.borderStyle.length; j++) {\n if (allTableElm[i].innerHTML.indexOf(this.borderStyle[j]) >= 0) {\n hasTableBorder = true;\n break;\n }\n }\n if (hasTableBorder) {\n allTableElm[i].classList.add('e-rte-table-border');\n hasTableBorder = false;\n }\n }\n };\n MsWordPaste.prototype.imageConversion = function (elm, rtfData) {\n this.checkVShape(elm);\n var imgElem = elm.querySelectorAll('img');\n for (var i = 0; i < imgElem.length; i++) {\n if (!isNOU(imgElem[i].getAttribute('v:shapes')) &&\n imgElem[i].getAttribute('v:shapes').indexOf('Picture') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('圖片') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('Grafik') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('Image') < 0) {\n detach(imgElem[i]);\n }\n }\n imgElem = elm.querySelectorAll('img');\n var imgSrc = [];\n var base64Src = [];\n var imgName = [];\n // eslint-disable-next-line\n var linkRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (imgElem.length > 0) {\n for (var i = 0; i < imgElem.length; i++) {\n imgSrc.push(imgElem[i].getAttribute('src'));\n imgName.push(imgElem[i].getAttribute('src').split('/')[imgElem[i].getAttribute('src').split('/').length - 1].split('.')[0]);\n }\n var hexValue = this.hexConversion(rtfData);\n for (var i = 0; i < hexValue.length; i++) {\n base64Src.push(this.convertToBase64(hexValue[i]));\n }\n for (var i = 0; i < imgElem.length; i++) {\n if (imgSrc[i].match(linkRegex)) {\n imgElem[i].setAttribute('src', imgSrc[i]);\n }\n else {\n imgElem[i].setAttribute('src', base64Src[i]);\n }\n imgElem[i].setAttribute('id', 'msWordImg-' + imgName[i]);\n }\n }\n };\n MsWordPaste.prototype.checkVShape = function (elm) {\n var allNodes = elm.querySelectorAll('*');\n for (var i = 0; i < allNodes.length; i++) {\n switch (allNodes[i].nodeName) {\n case 'V:SHAPETYPE':\n detach(allNodes[i]);\n break;\n case 'V:SHAPE':\n if (allNodes[i].firstElementChild.nodeName === 'V:IMAGEDATA') {\n var src = allNodes[i].firstElementChild.getAttribute('src');\n var imgElement = createElement('img');\n imgElement.setAttribute('src', src);\n allNodes[i].parentElement.insertBefore(imgElement, allNodes[i]);\n detach(allNodes[i]);\n }\n break;\n }\n }\n };\n MsWordPaste.prototype.convertToBase64 = function (hexValue) {\n var byteArr = this.conHexStringToBytes(hexValue.hex);\n var base64String = this.conBytesToBase64(byteArr);\n var base64 = hexValue.type ? 'data:' + hexValue.type + ';base64,' + base64String : null;\n return base64;\n };\n MsWordPaste.prototype.conBytesToBase64 = function (byteArr) {\n var base64Str = '';\n var base64Char = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var byteArrLen = byteArr.length;\n for (var i = 0; i < byteArrLen; i += 3) {\n var array3 = byteArr.slice(i, i + 3);\n var array3length = array3.length;\n var array4 = [];\n if (array3length < 3) {\n for (var j = array3length; j < 3; j++) {\n array3[j] = 0;\n }\n }\n array4[0] = (array3[0] & 0xFC) >> 2;\n array4[1] = ((array3[0] & 0x03) << 4) | (array3[1] >> 4);\n array4[2] = ((array3[1] & 0x0F) << 2) | ((array3[2] & 0xC0) >> 6);\n array4[3] = array3[2] & 0x3F;\n for (var j = 0; j < 4; j++) {\n if (j <= array3length) {\n base64Str += base64Char.charAt(array4[j]);\n }\n else {\n base64Str += '=';\n }\n }\n }\n return base64Str;\n };\n MsWordPaste.prototype.conHexStringToBytes = function (hex) {\n var byteArr = [];\n var byteArrLen = hex.length / 2;\n for (var i = 0; i < byteArrLen; i++) {\n byteArr.push(parseInt(hex.substr(i * 2, 2), 16));\n }\n return byteArr;\n };\n MsWordPaste.prototype.hexConversion = function (rtfData) {\n // eslint-disable-next-line\n var picHead = /\\{\\\\pict[\\s\\S]+?\\\\bliptag\\-?\\d+(\\\\blipupi\\-?\\d+)?(\\{\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s\\}]*?/;\n // eslint-disable-next-line\n var pic = new RegExp('(?:(' + picHead.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g');\n var fullImg = rtfData.match(pic);\n var imgType;\n var result = [];\n if (!isNOU(fullImg)) {\n for (var i = 0; i < fullImg.length; i++) {\n if (picHead.test(fullImg[i])) {\n if (fullImg[i].indexOf('\\\\pngblip') !== -1) {\n imgType = 'image/png';\n }\n else if (fullImg[i].indexOf('\\\\jpegblip') !== -1) {\n imgType = 'image/jpeg';\n }\n else {\n continue;\n }\n result.push({\n hex: imgType ? fullImg[i].replace(picHead, '').replace(/[^\\da-fA-F]/g, '') : null,\n type: imgType\n });\n }\n }\n }\n return result;\n };\n MsWordPaste.prototype.removeClassName = function (elm) {\n var elmWithClass = elm.querySelectorAll('*[class]');\n for (var i = 0; i < elmWithClass.length; i++) {\n elmWithClass[i].removeAttribute('class');\n }\n };\n MsWordPaste.prototype.breakLineAddition = function (elm) {\n var allElements = elm.querySelectorAll('*');\n for (var i = 0; i < allElements.length; i++) {\n if (allElements[i].children.length === 0 && allElements[i].innerHTML === ' ' &&\n (allElements[i].innerHTML === ' ' && !allElements[i].closest('li')) &&\n !allElements[i].closest('td') && (allElements[i].nodeName !== 'SPAN' ||\n allElements[i].nodeName === 'SPAN' && (isNOU(allElements[i].previousElementSibling) &&\n isNOU(allElements[i].nextElementSibling)))) {\n var detachableElement = this.findDetachElem(allElements[i]);\n var brElement = createElement('br');\n if (!isNOU(detachableElement.parentElement)) {\n detachableElement.parentElement.insertBefore(brElement, detachableElement);\n detach(detachableElement);\n }\n }\n }\n };\n MsWordPaste.prototype.findDetachElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement) &&\n element.parentElement.textContent.trim() === '' && element.parentElement.tagName !== 'TD' &&\n isNOU(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n return removableElement;\n };\n MsWordPaste.prototype.removeUnwantedElements = function (elm) {\n var innerElement = elm.innerHTML;\n for (var i = 0; i < this.removableElements.length; i++) {\n // eslint-disable-next-line\n var regExpStartElem = new RegExp('<' + this.removableElements[i] + '>', 'g');\n // eslint-disable-next-line\n var regExpEndElem = new RegExp('', 'g');\n innerElement = innerElement.replace(regExpStartElem, '');\n innerElement = innerElement.replace(regExpEndElem, '');\n }\n elm.innerHTML = innerElement;\n elm.querySelectorAll(':empty');\n };\n MsWordPaste.prototype.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNOU(element.parentElement)) {\n if (element.parentElement.textContent.trim() === '' &&\n element.parentElement.getAttribute('id') !== 'MSWord-Content' &&\n isNOU(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachEmptyElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n }\n else {\n removableElement = null;\n }\n return removableElement;\n };\n MsWordPaste.prototype.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n for (var i = 0; i < emptyElements.length; i++) {\n if (!isNOU(emptyElements[i].closest('td')) &&\n !isNOU(emptyElements[i].closest('td').querySelector('.MsoNormal'))) {\n emptyElements[i].innerHTML = '-';\n }\n if (emptyElements[i].tagName !== 'IMG' && emptyElements[i].tagName !== 'BR' &&\n emptyElements[i].tagName !== 'IFRAME' && emptyElements[i].tagName !== 'TD' &&\n emptyElements[i].tagName !== 'HR') {\n var detachableElement = this.findDetachEmptyElem(emptyElements[i]);\n if (!isNOU(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n MsWordPaste.prototype.styleCorrection = function (elm, wordPasteStyleConfig) {\n var styleElement = elm.querySelectorAll('style');\n if (styleElement.length > 0) {\n var styles = styleElement[0].innerHTML.match(/[\\S ]+\\s+{[\\s\\S]+?}/gi);\n var styleClassObject_1 = !isNOU(styles) ? this.findStyleObject(styles) : null;\n var keys = Object.keys(styleClassObject_1);\n var values = keys.map(function (key) {\n return styleClassObject_1[\"\" + key];\n });\n values = this.removeUnwantedStyle(values, wordPasteStyleConfig);\n this.filterStyles(elm, wordPasteStyleConfig);\n var resultElem = void 0;\n var fromClass = false;\n for (var i = 0; i < keys.length; i++) {\n if (keys[i].split('.')[0] === '') {\n resultElem = elm.getElementsByClassName(keys[i].split('.')[1]);\n fromClass = true;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') >= 0) {\n continue;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') < 0) {\n resultElem = elm.getElementsByTagName(keys[i]);\n }\n else {\n resultElem = elm.querySelectorAll(keys[i]);\n }\n for (var j = 0; j < resultElem.length; j++) {\n var styleProperty = resultElem[j].getAttribute('style');\n if (!isNOU(styleProperty) && styleProperty.trim() !== '') {\n var valueSplit = values[i].split(';');\n if (!fromClass) {\n for (var k = 0; k < valueSplit.length; k++) {\n if (styleProperty.indexOf(valueSplit[k].split(':')[0]) >= 0) {\n valueSplit.splice(k, 1);\n k--;\n }\n }\n }\n var changedValue = styleProperty + valueSplit.join(';') + ';';\n resultElem[j].setAttribute('style', changedValue);\n }\n else {\n values[i] = values[i].replace(/text-indent:-(.*?)(?=;|$)/gm, '');\n resultElem[j].setAttribute('style', values[i]);\n }\n }\n fromClass = false;\n }\n var listClass = ['MsoListParagraphCxSpFirst', 'MsoListParagraphCxSpMiddle', 'MsoListParagraphCxSpLast'];\n for (var i = 0; i < listClass.length; i++) {\n if (keys.indexOf('li.' + listClass[i]) > -1) {\n var olULElems = elm.querySelectorAll('ol.' + listClass[i] + ', ul.' + listClass[i]);\n for (var j = 0; j < olULElems.length; j++) {\n var styleProperty = olULElems[j].getAttribute('style');\n if (!isNOU(styleProperty) && styleProperty.trim() !== '' && olULElems[j].style.marginLeft !== '') {\n var valueSplit = values[keys.indexOf('li.' + listClass[i])].split(';');\n for (var k = 0; k < valueSplit.length; k++) {\n if ('margin-left'.indexOf(valueSplit[k].split(':')[0]) >= 0) {\n if (!isNOU(valueSplit[k].split(':')[1]) &&\n valueSplit[k].split(':')[1].indexOf('in') >= 0 &&\n olULElems[j].style.marginLeft.indexOf('in') >= 0) {\n var classStyle = parseFloat(valueSplit[k].split(':')[1].split('in')[0]);\n var inlineStyle = parseFloat(olULElems[j].style.marginLeft.split('in')[0]);\n olULElems[j].style.marginLeft = (inlineStyle - classStyle) + 'in';\n }\n }\n }\n }\n }\n }\n }\n }\n };\n MsWordPaste.prototype.filterStyles = function (elm, wordPasteStyleConfig) {\n var elmWithStyles = elm.querySelectorAll('*[style]');\n for (var i = 0; i < elmWithStyles.length; i++) {\n var elemStyleProperty = elmWithStyles[i].getAttribute('style').split(';');\n var styleValue = '';\n for (var j = 0; j < elemStyleProperty.length; j++) {\n if (wordPasteStyleConfig.indexOf(elemStyleProperty[j].split(':')[0].trim()) >= 0) {\n styleValue += elemStyleProperty[j] + ';';\n }\n }\n elmWithStyles[i].setAttribute('style', styleValue);\n }\n };\n MsWordPaste.prototype.removeUnwantedStyle = function (values, wordPasteStyleConfig) {\n for (var i = 0; i < values.length; i++) {\n var styleValues = values[i].split(';');\n values[i] = '';\n for (var j = 0; j < styleValues.length; j++) {\n if (wordPasteStyleConfig.indexOf(styleValues[j].split(':')[0]) >= 0) {\n values[i] += styleValues[j] + ';';\n }\n }\n }\n return values;\n };\n MsWordPaste.prototype.findStyleObject = function (styles) {\n var styleClassObject = {};\n for (var i = 0; i < styles.length; i++) {\n var tempStyle = styles[i];\n var classNameCollection = tempStyle.replace(/([\\S ]+\\s+){[\\s\\S]+?}/gi, '$1');\n var stylesCollection = tempStyle.replace(/[\\S ]+\\s+{([\\s\\S]+?)}/gi, '$1');\n classNameCollection = classNameCollection.replace(/^[\\s]|[\\s]$/gm, '');\n stylesCollection = stylesCollection.replace(/^[\\s]|[\\s]$/gm, '');\n classNameCollection = classNameCollection.replace(/\\n|\\r|\\n\\r/g, '');\n stylesCollection = stylesCollection.replace(/\\n|\\r|\\n\\r/g, '');\n for (var classNames = classNameCollection.split(', '), j = 0; j < classNames.length; j++) {\n styleClassObject[classNames[j]] = stylesCollection;\n }\n }\n return styleClassObject;\n };\n MsWordPaste.prototype.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n MsWordPaste.prototype.cleanUp = function (node, listNodes) {\n // eslint-disable-next-line\n var temp = '';\n var tempCleaner = [];\n var prevflagState;\n var allNodes = node.querySelectorAll('*');\n for (var index = 0; index < allNodes.length; index++) {\n if (this.ignorableNodes.indexOf(allNodes[index].nodeName) === -1 ||\n (allNodes[index].nodeType === 3 && allNodes[index].textContent.trim() === '')) {\n tempCleaner.push(allNodes[index]);\n continue;\n }\n else if (allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 &&\n allNodes[index].childElementCount !== 1 && !isNOU(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0) {\n if (allNodes[index].className.indexOf('MsoListParagraphCxSpFirst') >= 0 && listNodes.length > 0 &&\n listNodes[listNodes.length - 1] !== null) {\n listNodes.push(null);\n }\n listNodes.push(allNodes[index]);\n }\n if (prevflagState && (this.blockNode.indexOf(allNodes[index].nodeName.toLowerCase()) !== -1) &&\n !(allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 && !isNOU(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0)) {\n listNodes.push(null);\n }\n if (this.blockNode.indexOf(allNodes[index].nodeName.toLowerCase()) !== -1) {\n if (allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 && !isNOU(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0) {\n prevflagState = true;\n }\n else {\n prevflagState = false;\n }\n }\n }\n if (listNodes.length && (listNodes[listNodes.length - 1] !== null)) {\n listNodes.push(null);\n }\n return listNodes;\n };\n MsWordPaste.prototype.listConverter = function (listNodes) {\n var level;\n var data = [];\n var collection = [];\n var content = '';\n var stNode;\n var currentListStyle = '';\n for (var i = 0; i < listNodes.length; i++) {\n if (listNodes[i] === null) {\n data.push({ content: this.makeConversion(collection), node: listNodes[i - 1] });\n collection = [];\n continue;\n }\n if (listNodes[i].getAttribute('style') && listNodes[i].getAttribute('style').indexOf('mso-outline-level') !== -1) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('mso-outline-level', 'mso-outline'));\n }\n content = listNodes[i].getAttribute('style');\n if (content && content.indexOf('level') !== -1) {\n // eslint-disable-next-line\n level = parseInt(content.charAt(content.indexOf('level') + 5), null);\n }\n else {\n level = 1;\n }\n this.listContents = [];\n this.getListContent(listNodes[i]);\n var type = void 0;\n var listStyleType = void 0;\n var startAttr = void 0;\n var styleMarginLeft = void 0;\n if (!isNOU(this.listContents[0])) {\n type = this.listContents[0].trim().length > 1 ? 'ol' : 'ul';\n listStyleType = this.getlistStyleType(this.listContents[0], type);\n if (type === 'ol' && (i === 0 || listNodes[i - 1] === null)) {\n var startString = this.listContents[0].split('.')[0];\n var listTypes = ['A', 'a', 'I', 'i', 'α', '1', '1-']; // Add '1-' for rare list type.\n if (listTypes.indexOf(startString) === -1) {\n if (listStyleType === 'decimal') {\n // Bug in getlistStyleType() list style stype is returned as decimal for nested list with start attribute\n if (!isNaN(parseInt(startString, 10))) {\n startAttr = parseInt(startString, 10);\n }\n }\n else if (listStyleType === 'upper-alpha') {\n startAttr = (startString.split('.')[0].charCodeAt(0) - 64);\n }\n else if (listStyleType === 'lower-alpha') {\n startAttr = (startString.split('.')[0].charCodeAt(0) - 96);\n }\n }\n if (listNodes[i].style.marginLeft !== '') {\n styleMarginLeft = listNodes[i].style.marginLeft;\n }\n }\n var tempNode = [];\n for (var j = 1; j < this.listContents.length; j++) {\n tempNode.push(this.listContents[j]);\n }\n var currentClassName = void 0;\n if (!isNOU(listNodes[i].className)) {\n currentClassName = listNodes[i].className;\n }\n if (!isNOU(listNodes[i].getAttribute('style'))) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('text-align:start;', ''));\n if (listNodes[i].style.textAlign !== '') {\n listNodes[i].setAttribute('style', 'text-align:' + listNodes[i].style.textAlign);\n currentListStyle = listNodes[i].getAttribute('style');\n }\n }\n collection.push({ listType: type, content: tempNode, nestedLevel: level, class: currentClassName,\n listStyle: currentListStyle, listStyleTypeName: listStyleType, start: startAttr, styleMarginLeft: styleMarginLeft });\n }\n }\n stNode = listNodes.shift();\n while (stNode) {\n var elemColl = [];\n for (var temp1 = 0; temp1 < data.length; temp1++) {\n if (data[temp1].node === stNode) {\n for (var index = 0; index < data[temp1].content.childNodes.length; index++) {\n elemColl.push(data[temp1].content.childNodes[index]);\n }\n for (var index = 0; index < elemColl.length; index++) {\n stNode.parentElement.insertBefore(elemColl[index], stNode);\n }\n break;\n }\n }\n stNode.remove();\n stNode = listNodes.shift();\n if (!stNode) {\n stNode = listNodes.shift();\n }\n }\n };\n MsWordPaste.prototype.getlistStyleType = function (listContent, type) {\n var currentListClass;\n var upperRomanNumber = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX',\n 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'];\n var lowerRomanNumber = ['i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii', 'viii', 'ix',\n 'x', 'xi', 'xii', 'xiii', 'xiv', 'xv', 'xvi', 'xvii', 'xviii', 'xix', 'xx'];\n var lowerGreekNumber = ['α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ',\n 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω'];\n if (type === 'ol') {\n var charCode = listContent.split('.')[0].charCodeAt(0);\n switch (true) {\n case upperRomanNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'upper-roman';\n break;\n case lowerRomanNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'lower-roman';\n break;\n case lowerGreekNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'lower-greek';\n break;\n case (charCode > 64 && charCode < 91):\n currentListClass = 'upper-alpha';\n break;\n case (charCode > 96 && charCode < 123):\n currentListClass = 'lower-alpha';\n break;\n default:\n currentListClass = 'decimal';\n break;\n }\n }\n else {\n switch (listContent.split('.')[0]) {\n case 'o':\n currentListClass = 'circle';\n break;\n case '§':\n currentListClass = 'square';\n break;\n default:\n currentListClass = 'disc';\n break;\n }\n }\n return currentListClass;\n };\n MsWordPaste.prototype.makeConversion = function (collection) {\n var root = createElement('div');\n var temp;\n var pLevel = 1;\n var prevList;\n var listCount = 0;\n var elem;\n for (var index = 0; index < collection.length; index++) {\n var pElement = createElement('p');\n pElement.innerHTML = collection[index].content.join(' ');\n if ((collection[index].nestedLevel === 1) && listCount === 0 && collection[index].content) {\n root.appendChild(temp = createElement(collection[index].listType, { className: collection[index].class }));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.marginLeft = collection[index].styleMarginLeft;\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n else if (collection[index].nestedLevel === pLevel) {\n if (prevList.parentElement.tagName.toLowerCase() === collection[index].listType) {\n prevList.parentElement.appendChild(prevList = createElement('li'));\n prevList.appendChild(pElement);\n }\n else {\n temp = createElement(collection[index].listType);\n temp.style.listStyleType = collection[index].listStyleTypeName;\n prevList.parentElement.parentElement.appendChild(temp);\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n }\n }\n else if (collection[index].nestedLevel > pLevel) {\n if (!isNOU(prevList)) {\n for (var j = 0; j < collection[index].nestedLevel - pLevel; j++) {\n prevList.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n if (j !== collection[index].nestedLevel - pLevel - 1 &&\n collection[index].nestedLevel - pLevel > 1) {\n prevList.style.listStyleType = 'none';\n }\n temp.appendChild(prevList);\n }\n prevList.appendChild(pElement);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n else {\n root.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n }\n else if (collection[index].nestedLevel === 1) {\n if (root.lastChild.tagName.toLowerCase() === collection[index].listType) {\n temp = root.lastChild;\n }\n else {\n root.appendChild(temp = createElement(collection[index].listType));\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n }\n else {\n elem = prevList;\n while (elem.parentElement) {\n elem = elem.parentElement;\n if (elem.attributes.getNamedItem('level')) {\n // eslint-disable-next-line\n if (parseInt(elem.attributes.getNamedItem('level').textContent, null) === collection[index].nestedLevel) {\n prevList = createElement('li');\n prevList.appendChild(pElement);\n elem.appendChild(prevList);\n break;\n // eslint-disable-next-line\n }\n else if (collection[index].nestedLevel > parseInt(elem.attributes.getNamedItem('level').textContent, null)) {\n elem.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n break;\n }\n }\n continue;\n }\n }\n prevList.setAttribute('class', collection[index].class);\n var currentStyle = prevList.getAttribute('style');\n prevList.setAttribute('style', (!isNOU(currentStyle) ? currentStyle : ''));\n pLevel = collection[index].nestedLevel;\n listCount++;\n if (!isNOU(collection[index].start)) {\n temp.setAttribute('start', collection[index].start.toString());\n }\n }\n return root;\n };\n MsWordPaste.prototype.getListContent = function (elem) {\n var pushContent = '';\n var firstChild = elem.firstElementChild;\n if (firstChild.textContent.trim() === '' && !isNOU(firstChild.firstElementChild) &&\n firstChild.firstElementChild.nodeName === 'IMG') {\n pushContent = elem.innerHTML.trim();\n this.listContents.push('');\n this.listContents.push(pushContent);\n }\n else {\n var styleNodes = ['b', 'em'];\n if (firstChild.childNodes.length > 0 && (firstChild.querySelectorAll('b').length > 0\n || firstChild.querySelectorAll('em').length > 0)) {\n for (var i = 0; i < firstChild.childNodes.length; i++) {\n var nodeName = firstChild.childNodes[i].nodeName.toLowerCase();\n if (firstChild.childNodes[i].textContent.trim().length > 1 && styleNodes.indexOf(nodeName) !== -1) {\n pushContent = '<' + nodeName + '>' + firstChild.childNodes[i].textContent + '';\n this.listContents.push(pushContent);\n }\n else if (firstChild.childNodes[i].textContent.trim().length === 1) {\n this.listContents.push(firstChild.childNodes[i].textContent.trim());\n }\n }\n }\n else {\n pushContent = firstChild.textContent.trim();\n this.listContents.push(pushContent);\n }\n }\n detach(firstChild);\n this.listContents.push(elem.innerHTML);\n };\n return MsWordPaste;\n}());\nexport { MsWordPaste };\n","import * as CONSTANT from '../base/constant';\nimport { InsertHtml } from './inserthtml';\n/**\n * Insert a Text Node or Text\n *\n * @hidden\n\n */\nvar InsertTextExec = /** @class */ (function () {\n /**\n * Constructor for creating the InsertText plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n\n */\n function InsertTextExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n InsertTextExec.prototype.addEventListener = function () {\n this.parent.observer.on(CONSTANT.INSERT_TEXT_TYPE, this.insertText, this);\n };\n InsertTextExec.prototype.insertText = function (e) {\n var node = document.createTextNode(e.value);\n InsertHtml.Insert(this.parent.currentDocument, node, this.parent.editableElement);\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return InsertTextExec;\n}());\nexport { InsertTextExec };\n","import { closest, createElement, detach, isNullOrUndefined as isNOU, removeClass } from '@syncfusion/ej2-base';\nimport * as EVENTS from '../../common/constant';\nimport { SelectionCommands } from '../plugin';\nvar FormatPainterActions = /** @class */ (function () {\n function FormatPainterActions(parent, options) {\n this.parent = parent;\n this.settings = options;\n this.addEventListener();\n this.setDeniedFormats();\n }\n FormatPainterActions.prototype.addEventListener = function () {\n this.parent.observer.on(EVENTS.FORMAT_PAINTER_ACTIONS, this.actionHandler, this);\n };\n FormatPainterActions.prototype.actionHandler = function (args) {\n if (!isNOU(args) && !isNOU(args.item) && !isNOU(args.item.formatPainterAction)) {\n switch (args.item.formatPainterAction) {\n case 'format-copy':\n this.copyAction();\n break;\n case 'format-paste':\n this.pasteAction();\n break;\n case 'escape':\n this.escapeAction();\n break;\n }\n }\n };\n FormatPainterActions.prototype.generateElement = function () {\n var copyCollection = this.copyCollection.slice(); // To clone without reversing the collcection array\n copyCollection.reverse();\n var length = copyCollection.length;\n var elemCollection = createElement('div', { className: 'e-format-paste-wrapper' });\n var lastAppendChild;\n for (var i = 0; i < length; i++) {\n var _a = copyCollection[i], attrs = _a.attrs, className = _a.className, styles = _a.styles, tagName = _a.tagName;\n var elem = createElement(tagName);\n if (className !== '') {\n elem.className = className;\n }\n for (var i_1 = 0; i_1 < attrs.length; i_1++) {\n var property = attrs[i_1].name;\n var value = attrs[i_1].value;\n elem.setAttribute(property, value);\n }\n for (var i_2 = 0; i_2 < styles.length; i_2++) {\n var property = styles[i_2].property;\n var value = styles[i_2].value;\n var priority = styles[i_2].priority;\n elem.style.setProperty(property, value, priority);\n }\n if (elemCollection.childElementCount === 0) {\n elemCollection.append(elem);\n lastAppendChild = elem;\n }\n else {\n lastAppendChild.append(elem);\n lastAppendChild = elem;\n }\n }\n var elemChild = this.removeDeniedFormats(elemCollection);\n var currentElem = elemChild;\n while (currentElem) {\n if (currentElem.firstChild === null) {\n lastAppendChild = currentElem;\n currentElem = undefined;\n }\n else {\n currentElem = currentElem.firstChild;\n }\n }\n this.newElem = elemChild;\n this.newElemLastChild = lastAppendChild;\n };\n FormatPainterActions.prototype.pasteAction = function () {\n if (isNOU(this.copyCollection) || this.copyCollection.length === 0) {\n this.paintPlainTextFormat();\n return;\n }\n this.insertFormatNode(this.newElem, this.newElemLastChild);\n this.parent.undoRedoManager.saveData();\n };\n FormatPainterActions.prototype.removeDeniedFormats = function (parentElement) {\n if (!isNOU(this.deniedFormatsCollection) && this.deniedFormatsCollection.length > 0) {\n var deniedPropArray = this.deniedFormatsCollection;\n var length_1 = deniedPropArray.length;\n for (var i = 0; i < length_1; i++) {\n var tag = deniedPropArray[i].tag;\n if (deniedPropArray[i].tag) {\n var elementsList = parentElement.querySelectorAll(tag);\n for (var j = 0; j < elementsList.length; j++) {\n if (deniedPropArray[i].classes.length > 0) {\n var classes = deniedPropArray[i].classes;\n var classLength = classes.length;\n for (var k = 0; k < classLength; k++) {\n if (elementsList[j].classList.contains(classes[k])) {\n removeClass([elementsList[j]], classes[k]);\n }\n }\n if (elementsList[j].classList.length === 0) {\n elementsList[j].removeAttribute('class');\n }\n }\n if (deniedPropArray[i].styles.length > 0) {\n var styles = deniedPropArray[i].styles;\n var styleLength = styles.length;\n for (var k = 0; k < styleLength; k++) {\n elementsList[j].style.removeProperty(styles[k]);\n }\n if (elementsList[j].style.length === 0) {\n elementsList[j].removeAttribute('style');\n }\n }\n if (deniedPropArray[i].attributes.length > 0) {\n var attributes = deniedPropArray[i].attributes;\n var attributeLength = attributes.length;\n for (var k = 0; k < attributeLength; k++) {\n elementsList[j].removeAttribute(attributes[k]);\n }\n }\n }\n }\n }\n }\n return parentElement.firstElementChild;\n };\n FormatPainterActions.prototype.copyAction = function () {\n var copyCollection = [];\n var range = this.parent.nodeSelection.getRange(document);\n var parentElem = range.startContainer.parentElement;\n var currentContext = this.findCurrentContext(parentElem);\n var allowedRulesArray = this.settings.allowedFormats.split(';');\n for (var i = 0; i < allowedRulesArray.length; i++) {\n allowedRulesArray[i] = allowedRulesArray[i].trim();\n }\n var _a = this.getRangeParentElem(currentContext, range), rangeParentElem = _a[0], context = _a[1];\n if (currentContext === null) {\n currentContext = context;\n }\n if (!isNOU(currentContext) && this.settings.allowedContext.indexOf(currentContext) > -1) {\n if (range.startContainer.nodeName === '#text') {\n parentElem = range.startContainer.parentElement;\n }\n var lastElement = parentElem;\n do {\n if (allowedRulesArray.indexOf(parentElem.nodeName.toLowerCase()) > -1) {\n var allAttributes = parentElem.attributes;\n var attribute = [];\n for (var i = 0; i < allAttributes.length; i++) {\n if (allAttributes[i].name !== 'class' && allAttributes[i].name !== 'style') {\n attribute.push(allAttributes[i]);\n }\n }\n var classes = parentElem.className;\n var allStyles = parentElem.style;\n var styleProp = [];\n for (var i = 0; i < allStyles.length; i++) {\n var property = allStyles[i];\n var value = allStyles.getPropertyValue(property);\n var priority = allStyles.getPropertyPriority(property);\n styleProp.push({ property: property, value: value, priority: priority });\n }\n copyCollection.push({\n attrs: attribute, className: classes, styles: styleProp, tagName: parentElem.nodeName\n });\n }\n if (rangeParentElem === parentElem) {\n parentElem = undefined;\n }\n else if (!isNOU(parentElem.parentElement)) {\n parentElem = parentElem.parentElement;\n }\n if (lastElement === parentElem) {\n break;\n }\n } while (!isNOU(parentElem) || parentElem === this.parent.editableElement);\n this.copyCollection = copyCollection;\n }\n this.generateElement();\n };\n FormatPainterActions.prototype.getRangeParentElem = function (currentContext, range) {\n var startContainer = range.startContainer;\n var rangeParentELem;\n if (startContainer.nodeType === 3) {\n startContainer = startContainer.parentElement;\n }\n switch (currentContext) {\n case 'Table':\n rangeParentELem = closest(startContainer, 'td');\n if (isNOU(rangeParentELem)) {\n rangeParentELem = closest(startContainer, 'th');\n }\n break;\n case 'List':\n rangeParentELem = closest(startContainer, 'li');\n break;\n case 'Text':\n rangeParentELem = closest(startContainer, 'p');\n break;\n }\n if (isNOU(rangeParentELem)) {\n var nearBlockParentName = this.getNearestBlockParentElement(range);\n if (!isNOU(nearBlockParentName) && nearBlockParentName !== 'UL' &&\n nearBlockParentName !== 'OL' && nearBlockParentName !== 'LI') {\n rangeParentELem = closest(startContainer, nearBlockParentName);\n currentContext = 'Text';\n }\n }\n if (currentContext === 'List') {\n rangeParentELem = rangeParentELem.parentElement;\n }\n return [rangeParentELem, currentContext];\n };\n FormatPainterActions.prototype.getNearestBlockParentElement = function (range) {\n var node = range.commonAncestorContainer;\n if (node.nodeType === 3) {\n node = node.parentNode;\n }\n // iterate untill the content editable div\n while (node && node !== this.parent.editableElement) {\n // If true return the block node name.\n if (!isNOU(node) && this.isBlockElement(node)) {\n return node.nodeName;\n }\n // if false re assign node to parent node\n node = node.parentNode;\n }\n return null;\n };\n FormatPainterActions.prototype.isBlockElement = function (node) {\n var blockTags = ['P', 'DIV', 'UL', 'OL', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6',\n 'ADDRESS', 'ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'HEADER',\n 'HR', 'MAIN', 'NAV', 'SECTION', 'SUMMARY', 'PRE'];\n return blockTags.indexOf(node.nodeName) > -1;\n };\n FormatPainterActions.prototype.escapeAction = function () {\n this.copyCollection = [];\n };\n FormatPainterActions.prototype.paintPlainTextFormat = function () {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var domSelection = this.parent.nodeSelection;\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n var isInValid;\n if (nodes.length > 1) {\n for (var i = 0; i < nodes.length; i++) {\n isInValid = this.validateELementTag(nodes[i]);\n }\n }\n else {\n isInValid = this.validateELementTag(range.startContainer) && this.validateELementTag(range.endContainer);\n }\n if (!isInValid) {\n this.parent.execCommand('Clear', 'ClearFormat', null, null);\n }\n };\n FormatPainterActions.prototype.validateELementTag = function (node) {\n var INVALID_TAGS = ['A', 'AUDIO', 'IMG', 'VIDEO', 'IFRAME'];\n if (node.nodeType === 3) {\n node = node.parentElement;\n }\n return INVALID_TAGS.indexOf(node.tagName) > -1;\n };\n FormatPainterActions.prototype.findCurrentContext = function (parentElem) {\n if (closest(parentElem, 'td') || closest(parentElem, 'tr') || closest(parentElem, 'tbody')) {\n return 'Table';\n }\n else if (closest(parentElem, 'li')) {\n return 'List';\n }\n else if (closest(parentElem, 'p')) {\n return 'Text';\n }\n return null;\n };\n FormatPainterActions.prototype.insertFormatNode = function (elem, lastChild) {\n var endNode = this.parent.editableElement;\n var docElement = this.parent.currentDocument;\n var domSelection = this.parent.nodeSelection;\n var clonedElem = elem.cloneNode(true);\n var childElem = clonedElem.firstChild;\n var inlineElement;\n while (childElem) {\n if (this.isBlockElement(childElem)) {\n childElem = childElem.firstChild;\n }\n else {\n inlineElement = childElem.parentNode.removeChild(childElem);\n break;\n }\n }\n var formatValues = {\n element: inlineElement,\n lastChild: lastChild\n };\n SelectionCommands.applyFormat(docElement, null, endNode, 'P', 'formatPainter', null, formatValues);\n var isFullNodeSelected;\n var range = this.parent.nodeSelection.getRange(docElement);\n var isCollapsed = range.collapsed;\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n if (nodes.length === 1) {\n while (!this.isBlockElement(nodes[0])) {\n nodes[0] = nodes[0].parentElement;\n }\n isFullNodeSelected = nodes[0].textContent.trim() === range.commonAncestorContainer.wholeText.trim();\n }\n if (this.isBlockElement(elem) && isCollapsed || nodes.length > 1 || isFullNodeSelected) {\n this.insertBlockNode(elem, range, docElement, endNode, nodes);\n }\n };\n FormatPainterActions.prototype.insertBlockNode = function (element, range, docElement, endNode, nodes) {\n var domSelection = this.parent.nodeSelection;\n var listElement; // To clone to multiple list elements\n var cloneListParentNode;\n if (element.nodeName === 'UL' || element.nodeName === 'OL') {\n cloneListParentNode = element.cloneNode(true);\n listElement = cloneListParentNode.firstChild;\n }\n var textNode = range.startContainer; // To set cursor position\n for (var index = 0; index < nodes.length; index++) {\n var lastTextNode = nodes[index];\n if (nodes[index].nodeType === 3) {\n nodes[index] = nodes[index].parentElement;\n }\n while (!this.isBlockElement(nodes[index])) {\n nodes[index] = nodes[index].parentElement;\n }\n var cloneParentNode = void 0;\n if (!isNOU(cloneListParentNode)) {\n cloneParentNode = listElement.cloneNode(true);\n }\n else {\n cloneParentNode = element.cloneNode(true);\n }\n // Appending all the child elements\n while (nodes[index].firstChild) {\n if (cloneParentNode.nodeName === 'LI') {\n cloneParentNode.appendChild(nodes[index].firstChild);\n }\n else {\n // Except list nodes other block nodes replaced here\n if (nodes[index].nodeType === 3) {\n cloneParentNode.appendChild(nodes[index].firstChild);\n }\n else {\n cloneParentNode.innerHTML = nodes[index].innerHTML;\n nodes[index].innerHTML = '';\n }\n nodes[index] = nodes[index].parentNode.replaceChild(cloneParentNode, nodes[index]);\n }\n }\n if (cloneParentNode.nodeName === 'LI') {\n // Appending the li nodes to the ol or ul node\n cloneListParentNode.append(cloneParentNode);\n if (index === 0) {\n var nodeName = nodes[index].nodeName;\n nodes[index] = nodes[index].parentNode.replaceChild(cloneListParentNode, nodes[index]);\n var parent_1 = nodeName === 'LI' ? cloneListParentNode.parentElement\n : cloneListParentNode;\n // Splicing and then inserting the node to previous element sibling of the Listparent.parent\n this.parent.nodeCutter.SplitNode(range, parent_1, true);\n if (!isNOU(parent_1.previousElementSibling)) {\n parent_1.parentNode.insertBefore(cloneListParentNode, parent_1.nextElementSibling);\n }\n else {\n parent_1.parentElement.insertBefore(cloneListParentNode, parent_1);\n }\n }\n detach(nodes[index]);\n }\n /**Removing the inserted block node in list and appending to previous element sibling */\n if (cloneParentNode.nodeName !== 'LI' && (cloneParentNode.parentElement.nodeName === 'OL' ||\n cloneParentNode.parentElement.nodeName === 'UL')) {\n var parent_2 = cloneParentNode.parentElement;\n // Cutting single ul or ol to two ul or ol based on the range\n this.parent.nodeCutter.SplitNode(range, parent_2, true);\n if (!isNOU(parent_2.previousElementSibling)) {\n parent_2.previousElementSibling.after(cloneParentNode);\n }\n else {\n parent_2.parentElement.prepend(cloneParentNode);\n }\n }\n nodes[index] = lastTextNode;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n !isNOU(listElement) ? detach(listElement) : false;\n this.cleanEmptyLists();\n if (nodes.length > 1) {\n var startSelectNode = nodes[0];\n var endSelectNode = nodes[nodes.length - 1];\n domSelection.setSelectionText(docElement, startSelectNode, endSelectNode, 0, endSelectNode.textContent.length);\n }\n else {\n domSelection.setCursorPoint(docElement, textNode, textNode.textContent.length);\n }\n };\n FormatPainterActions.prototype.cleanEmptyLists = function () {\n var listElem = this.parent.editableElement.querySelectorAll('ol, ul');\n for (var i = 0; i < listElem.length; i++) {\n if (listElem[i].textContent.trim() === '') {\n detach(listElem[i]);\n }\n }\n };\n FormatPainterActions.prototype.setDeniedFormats = function () {\n var deniedFormatsCollection = [];\n if (isNOU(this.settings) || isNOU(this.settings.deniedFormats)) {\n return;\n }\n var deniedFormats = this.settings.deniedFormats.split(';');\n var length = deniedFormats.length;\n for (var i = 0; i < length; i++) {\n var formatString = deniedFormats[i];\n if (formatString !== '') {\n formatString.trim();\n var collection = this.makeDeniedFormatsCollection(formatString);\n if (!isNOU(collection)) {\n deniedFormatsCollection.push(collection);\n }\n }\n }\n this.deniedFormatsCollection = deniedFormatsCollection;\n };\n FormatPainterActions.prototype.makeDeniedFormatsCollection = function (value) {\n var openParenIndex = value.indexOf('(');\n var closeParenIndex = value.indexOf(')');\n var openBracketIndex = value.indexOf('[');\n var closeBracketIndex = value.indexOf(']');\n var openBraceIndex = value.indexOf('{');\n var closeBraceIndex = value.indexOf('}');\n var classes = [];\n var attributes = '';\n var styles = '';\n var tagName = '';\n var classList = [];\n var attributesList = [];\n var stylesList = [];\n if (openParenIndex > -1 && closeParenIndex > -1) {\n classes = value.substring(openParenIndex + 1, closeParenIndex).split(' ');\n classList = classes[0].split(')')[0].split(',');\n }\n if (openBracketIndex > -1 && closeBracketIndex > -1) {\n attributes = value.substring(openBracketIndex + 1, closeBracketIndex);\n attributesList = attributes.split(',');\n }\n if (openBraceIndex > -1 && closeBraceIndex > -1) {\n styles = value.substring(openBraceIndex + 1, closeBraceIndex);\n stylesList = styles.split(',');\n }\n var openIndexArray = [openParenIndex, openBracketIndex, openBraceIndex];\n openIndexArray = openIndexArray.filter(function (index) { return index > -1; });\n var len = openIndexArray.length;\n var min;\n if (len === 1) {\n min = openIndexArray[0];\n }\n else if (len === 2) {\n min = Math.min(openIndexArray[0], openIndexArray[1]);\n }\n else if (len === 3) {\n min = Math.min(openIndexArray[0], openIndexArray[1], openIndexArray[2]);\n }\n tagName = value.substring(0, min);\n tagName.trim();\n return ({\n tag: tagName, styles: stylesList, classes: classList,\n attributes: attributesList\n });\n };\n return FormatPainterActions;\n}());\nexport { FormatPainterActions };\n","import { Observer } from '@syncfusion/ej2-base';\nimport * as CONSTANT from './constant';\nimport { Lists } from './../plugin/lists';\nimport { NodeSelection } from './../../selection/index';\nimport { DOMNode } from './../plugin/dom-node';\nimport { Formats } from './../plugin/formats';\nimport { LinkCommand } from './../plugin/link';\nimport { Alignments } from './../plugin/alignments';\nimport { Indents } from './../plugin/indents';\nimport { ImageCommand } from './../plugin/image';\nimport { AudioCommand } from './../plugin/audio';\nimport { VideoCommand } from './../plugin/video';\nimport { TableCommand } from './../plugin/table';\nimport { SelectionBasedExec } from './../plugin/selection-exec';\nimport { InsertHtmlExec } from './../plugin/inserthtml-exec';\nimport { ClearFormatExec } from './../plugin/clearformat-exec';\nimport { UndoRedoManager } from './../plugin/undo';\nimport { MsWordPaste } from '../plugin/ms-word-clean-up';\nimport * as EVENTS from './../../common/constant';\nimport { InsertTextExec } from '../plugin/insert-text';\nimport { NodeCutter } from '../plugin/nodecutter';\nimport { FormatPainterActions } from '../plugin/format-painter-actions';\n/**\n * EditorManager internal component\n *\n * @hidden\n\n */\nvar EditorManager = /** @class */ (function () {\n /**\n * Constructor for creating the component\n *\n * @hidden\n\n * @param {ICommandModel} options - specifies the command Model\n */\n function EditorManager(options) {\n this.currentDocument = options.document;\n this.editableElement = options.editableElement;\n this.nodeSelection = new NodeSelection();\n this.nodeCutter = new NodeCutter();\n this.domNode = new DOMNode(this.editableElement, this.currentDocument);\n this.observer = new Observer(this);\n this.listObj = new Lists(this);\n this.formatObj = new Formats(this);\n this.alignmentObj = new Alignments(this);\n this.indentsObj = new Indents(this);\n this.linkObj = new LinkCommand(this);\n this.imgObj = new ImageCommand(this);\n this.audioObj = new AudioCommand(this);\n this.videoObj = new VideoCommand(this);\n this.selectionObj = new SelectionBasedExec(this);\n this.inserthtmlObj = new InsertHtmlExec(this);\n this.insertTextObj = new InsertTextExec(this);\n this.clearObj = new ClearFormatExec(this);\n this.tableObj = new TableCommand(this);\n this.undoRedoManager = new UndoRedoManager(this, options.options);\n this.msWordPaste = new MsWordPaste(this);\n this.formatPaintetrObj = new FormatPainterActions(this, options.formatPainterSettings);\n this.wireEvents();\n }\n EditorManager.prototype.wireEvents = function () {\n this.observer.on(EVENTS.KEY_DOWN, this.editorKeyDown, this);\n this.observer.on(EVENTS.KEY_UP, this.editorKeyUp, this);\n this.observer.on(EVENTS.KEY_UP, this.editorKeyUp, this);\n this.observer.on(EVENTS.MODEL_CHANGED, this.onPropertyChanged, this);\n this.observer.on(EVENTS.MS_WORD_CLEANUP, this.onWordPaste, this);\n this.observer.on(EVENTS.ON_BEGIN, this.onBegin, this);\n };\n EditorManager.prototype.onWordPaste = function (e) {\n this.observer.notify(EVENTS.MS_WORD_CLEANUP_PLUGIN, e);\n };\n EditorManager.prototype.onPropertyChanged = function (props) {\n this.observer.notify(EVENTS.MODEL_CHANGED_PLUGIN, props);\n };\n EditorManager.prototype.editorKeyDown = function (e) {\n this.observer.notify(EVENTS.KEY_DOWN_HANDLER, e);\n };\n EditorManager.prototype.editorKeyUp = function (e) {\n this.observer.notify(EVENTS.KEY_UP_HANDLER, e);\n };\n EditorManager.prototype.onBegin = function (e) {\n this.observer.notify(EVENTS.SPACE_ACTION, e);\n };\n /* eslint-disable */\n /**\n * execCommand\n *\n * @param {ExecCommand} command - specifies the execution command\n * @param {T} value - specifes the value.\n * @param {Event} event - specifies the call back event\n * @param {Function} callBack - specifies the function\n * @param {string} text - specifies the string value\n * @param {T} exeValue - specifies the values to be executed\n * @param {string} selector - specifies the selector values\n * @returns {void}\n * @hidden\n\n */\n /* eslint-enable */\n EditorManager.prototype.execCommand = function (command, value, event, callBack, text, exeValue, selector, enterAction) {\n switch (command.toLowerCase()) {\n case 'lists':\n this.observer.notify(EVENTS.LIST_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, item: exeValue, enterAction: enterAction });\n break;\n case 'formats':\n this.observer.notify(EVENTS.FORMAT_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, exeValue: exeValue, enterAction: enterAction\n });\n break;\n case 'alignments':\n this.observer.notify(CONSTANT.ALIGNMENT_TYPE, {\n subCommand: value, event: event, callBack: callBack,\n selector: selector,\n value: exeValue\n });\n break;\n case 'indents':\n this.observer.notify(CONSTANT.INDENT_TYPE, { subCommand: value, event: event, callBack: callBack, selector: selector });\n break;\n case 'links':\n this.observer.notify(CONSTANT.LINK, { command: command, value: value, item: exeValue, event: event, callBack: callBack });\n break;\n case 'files':\n this.observer.notify(CONSTANT.IMAGE, {\n command: command, value: 'Image', item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'images':\n this.observer.notify(CONSTANT.IMAGE, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'audios':\n this.observer.notify(CONSTANT.AUDIO, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'videos':\n this.observer.notify(CONSTANT.VIDEO, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'table':\n switch (value.toString().toLocaleLowerCase()) {\n case 'createtable':\n this.observer.notify(CONSTANT.TABLE, { item: exeValue, event: event, callBack: callBack, enterAction: enterAction });\n break;\n case 'insertrowbefore':\n case 'insertrowafter':\n this.observer.notify(CONSTANT.INSERT_ROW, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'insertcolumnleft':\n case 'insertcolumnright':\n this.observer.notify(CONSTANT.INSERT_COLUMN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'deleterow':\n this.observer.notify(CONSTANT.DELETEROW, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'deletecolumn':\n this.observer.notify(CONSTANT.DELETECOLUMN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'tableremove':\n this.observer.notify(CONSTANT.REMOVETABLE, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'tableheader':\n this.observer.notify(CONSTANT.TABLEHEADER, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'aligntop':\n case 'alignmiddle':\n case 'alignbottom':\n this.observer.notify(CONSTANT.TABLE_VERTICAL_ALIGN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'merge':\n this.observer.notify(CONSTANT.TABLE_MERGE, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'horizontalsplit':\n this.observer.notify(CONSTANT.TABLE_HORIZONTAL_SPLIT, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'verticalsplit':\n this.observer.notify(CONSTANT.TABLE_VERTICAL_SPLIT, { item: exeValue, event: event, callBack: callBack });\n break;\n }\n break;\n case 'font':\n case 'style':\n case 'effects':\n case 'casing':\n this.observer.notify(CONSTANT.SELECTION_TYPE, { subCommand: value, event: event, callBack: callBack, value: text, selector: selector, enterAction: enterAction });\n break;\n case 'inserthtml':\n this.observer.notify(CONSTANT.INSERTHTML_TYPE, { subCommand: value, callBack: callBack, value: text, enterAction: enterAction });\n break;\n case 'inserttext':\n this.observer.notify(CONSTANT.INSERT_TEXT_TYPE, { subCommand: value, callBack: callBack, value: text });\n break;\n case 'clear':\n this.observer.notify(CONSTANT.CLEAR_TYPE, { subCommand: value, event: event, callBack: callBack, selector: selector, enterAction: enterAction });\n break;\n case 'actions':\n this.observer.notify(EVENTS.ACTION, { subCommand: value, event: event, callBack: callBack, selector: selector });\n break;\n case 'formatpainter':\n this.observer.notify(EVENTS.FORMAT_PAINTER_ACTIONS, { item: exeValue, subCommand: value, event: event, callBack: callBack });\n break;\n }\n };\n return EditorManager;\n}());\nexport { EditorManager };\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 { Formatter } from './formatter';\nimport { EditorManager } from './../../editor-manager/base/editor-manager';\nimport { extend } from '@syncfusion/ej2-base';\nimport { htmlKeyConfig } from './../../common/config';\n/**\n * HTML adapter\n *\n * @hidden\n\n */\nvar HTMLFormatter = /** @class */ (function (_super) {\n __extends(HTMLFormatter, _super);\n function HTMLFormatter(options) {\n var _this = _super.call(this) || this;\n _this.initialize();\n extend(_this, _this, options, true);\n if (_this.currentDocument && _this.element) {\n _this.updateFormatter(_this.element, _this.currentDocument, options.options, options.formatPainterSettings);\n }\n return _this;\n }\n HTMLFormatter.prototype.initialize = function () {\n this.keyConfig = htmlKeyConfig;\n };\n /**\n * Update the formatter of RichTextEditor\n *\n * @param {Element} editElement - specifies the edit element.\n * @param {Document} doc - specifies the doucment\n * @param {number} options - specifies the options\n * @param {FormatPainterSettingsModel} formatPainterSettings - specifies the format painter settings\n * @returns {void}\n * @hidden\n\n */\n HTMLFormatter.prototype.updateFormatter = function (editElement, doc, options, formatPainterSettings) {\n if (editElement && doc) {\n this.editorManager = new EditorManager({\n document: doc,\n editableElement: editElement,\n options: options,\n formatPainterSettings: formatPainterSettings\n });\n }\n };\n return HTMLFormatter;\n}(Formatter));\nexport { HTMLFormatter };\n","import { IsFormatted } from './isformatted';\nimport * as CONSTANT from './../base/constant';\nimport { NodeSelection } from './../../selection/index';\nimport { getDefaultHtmlTbStatus } from './../../common/util';\n/**\n * Update Toolbar Status\n *\n * @hidden\n\n */\nexport var statusCollection = getDefaultHtmlTbStatus();\nvar ToolbarStatus = /** @class */ (function () {\n function ToolbarStatus() {\n }\n /**\n * get method\n *\n * @param {Document} docElement - specifies the document element\n * @param {Node} targetNode - specifies the target node\n * @param {string[]} formatNode - specifies the format node\n * @param {string[]} fontSize - specifies the font size\n * @param {string[]} fontName - specifies the font name.\n * @param {Node} documentNode - specifies the document node.\n * @returns {IToolbarStatus} - returns the toolbar status\n * @hidden\n\n */\n ToolbarStatus.get = function (docElement, targetNode, formatNode, fontSize, fontName, documentNode) {\n var formatCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeSelection = new NodeSelection();\n var range = nodeSelection.getRange(docElement);\n var nodes = documentNode ? [documentNode] : range.collapsed ? nodeSelection.getNodeCollection(range) :\n nodeSelection.getSelectionNodeCollectionBr(range);\n var nodesLength = nodes.length;\n var isNodeChanged = false;\n for (var index = 0; index < nodes.length; index++) {\n while (nodes[index].nodeType === 3 && range.startContainer.nodeType === 3 && nodes[index].parentNode &&\n nodes[index].parentNode.lastElementChild && nodes[index].parentNode.lastElementChild.nodeName !== 'BR' &&\n (this.getImmediateBlockNode(nodes[index].parentNode)).textContent.replace(/\\u200B/g, '').length === 0 &&\n range.startContainer.textContent.replace(/\\u200B/g, '').length === 0 &&\n nodeSelection.get(docElement).toString().replace(/\\u200B/g, '').length === 0) {\n nodes[index] = nodes[index].parentNode.lastElementChild.firstChild;\n isNodeChanged = true;\n }\n if (isNodeChanged && nodes[index]) {\n nodeSelection.setCursorPoint(docElement, nodes[index], nodes[index].textContent.length);\n isNodeChanged = false;\n }\n if ((nodes[index].nodeName !== 'BR' && nodes[index].nodeType !== 3) ||\n (nodesLength > 1 && nodes[index].nodeType === 3 && nodes[index].textContent.trim() === '')) {\n nodes.splice(index, 1);\n index--;\n }\n }\n for (var index = 0; index < nodes.length; index++) {\n // eslint-disable-next-line max-len\n formatCollection = this.getFormatParent(docElement, formatCollection, nodes[index], targetNode, formatNode, fontSize, fontName);\n if ((index === 0 && formatCollection.bold) || !formatCollection.bold) {\n nodeCollection.bold = formatCollection.bold;\n }\n if ((index === 0 && formatCollection.insertcode) || !formatCollection.insertcode) {\n nodeCollection.insertcode = formatCollection.insertcode;\n }\n if ((index === 0 && formatCollection.italic) || !formatCollection.italic) {\n nodeCollection.italic = formatCollection.italic;\n }\n if ((index === 0 && formatCollection.underline) || !formatCollection.underline) {\n nodeCollection.underline = formatCollection.underline;\n }\n if ((index === 0 && formatCollection.strikethrough) || !formatCollection.strikethrough) {\n nodeCollection.strikethrough = formatCollection.strikethrough;\n }\n if ((index === 0 && formatCollection.superscript) || !formatCollection.superscript) {\n nodeCollection.superscript = formatCollection.superscript;\n }\n if ((index === 0 && formatCollection.subscript) || !formatCollection.subscript) {\n nodeCollection.subscript = formatCollection.subscript;\n }\n if ((index === 0 && formatCollection.fontcolor) || !formatCollection.fontcolor) {\n nodeCollection.fontcolor = formatCollection.fontcolor;\n }\n if ((index === 0 && formatCollection.fontname) || !formatCollection.fontname) {\n nodeCollection.fontname = formatCollection.fontname;\n }\n if ((index === 0 && formatCollection.fontsize) || !formatCollection.fontsize) {\n nodeCollection.fontsize = formatCollection.fontsize;\n }\n if ((index === 0 && formatCollection.backgroundcolor) || !formatCollection.backgroundcolor) {\n nodeCollection.backgroundcolor = formatCollection.backgroundcolor;\n }\n if ((index === 0 && formatCollection.orderedlist) || !formatCollection.orderedlist) {\n nodeCollection.orderedlist = formatCollection.orderedlist;\n }\n if ((index === 0 && formatCollection.unorderedlist) || !formatCollection.unorderedlist) {\n nodeCollection.unorderedlist = formatCollection.unorderedlist;\n }\n if ((index === 0 && formatCollection.alignments) || !formatCollection.alignments) {\n nodeCollection.alignments = formatCollection.alignments;\n }\n if ((index === 0 && formatCollection.formats) || !formatCollection.formats) {\n nodeCollection.formats = formatCollection.formats;\n }\n if ((index === 0 && formatCollection.createlink) || !formatCollection.createlink) {\n nodeCollection.createlink = formatCollection.createlink;\n }\n if ((index === 0 && formatCollection.numberFormatList) || !formatCollection.numberFormatList) {\n nodeCollection.numberFormatList = formatCollection.numberFormatList;\n }\n if ((index === 0 && formatCollection.bulletFormatList) || !formatCollection.bulletFormatList) {\n nodeCollection.bulletFormatList = formatCollection.bulletFormatList;\n }\n formatCollection = JSON.parse(JSON.stringify(statusCollection));\n }\n return nodeCollection;\n };\n ToolbarStatus.getImmediateBlockNode = function (node) {\n do {\n node = node.parentNode;\n } while (node && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n ToolbarStatus.getFormatParent = function (docElement, formatCollection, node, targetNode, formatNode, fontSize, fontName) {\n if (targetNode.contains(node) ||\n (node.nodeType === 3 && targetNode.nodeType !== 3 && targetNode.contains(node.parentNode))) {\n do {\n formatCollection = this.isFormattedNode(docElement, formatCollection, node, formatNode, fontSize, fontName);\n node = node.parentNode;\n } while (node && (node !== targetNode));\n }\n return formatCollection;\n };\n ToolbarStatus.isFormattedNode = function (docElement, formatCollection, node, formatNode, fontSize, fontName) {\n if (!formatCollection.bold) {\n formatCollection.bold = IsFormatted.isBold(node);\n }\n if (!formatCollection.italic) {\n formatCollection.italic = IsFormatted.isItalic(node);\n }\n if (!formatCollection.underline) {\n formatCollection.underline = IsFormatted.isUnderline(node);\n }\n if (!formatCollection.strikethrough) {\n formatCollection.strikethrough = IsFormatted.isStrikethrough(node);\n }\n if (!formatCollection.superscript) {\n formatCollection.superscript = IsFormatted.isSuperscript(node);\n }\n if (!formatCollection.subscript) {\n formatCollection.subscript = IsFormatted.isSubscript(node);\n }\n if (!formatCollection.fontcolor) {\n formatCollection.fontcolor = this.isFontColor(docElement, node);\n }\n if (!formatCollection.fontname) {\n formatCollection.fontname = this.isFontName(docElement, node, fontName);\n }\n if (!formatCollection.fontsize) {\n formatCollection.fontsize = this.isFontSize(docElement, node, fontSize);\n }\n if (!formatCollection.backgroundcolor) {\n formatCollection.backgroundcolor = this.isBackgroundColor(node);\n }\n if (!formatCollection.orderedlist) {\n formatCollection.orderedlist = this.isOrderedList(node);\n }\n if (!formatCollection.unorderedlist) {\n formatCollection.unorderedlist = this.isUnorderedList(node);\n }\n if (!formatCollection.alignments) {\n formatCollection.alignments = this.isAlignment(node);\n }\n if (!formatCollection.formats) {\n formatCollection.formats = this.isFormats(node, formatNode);\n if (formatCollection.formats === 'pre') {\n formatCollection.insertcode = true;\n }\n }\n if (!formatCollection.createlink) {\n formatCollection.createlink = this.isLink(node);\n }\n if (!formatCollection.numberFormatList) {\n formatCollection.numberFormatList = this.isNumberFormatList(node);\n }\n if (!formatCollection.bulletFormatList) {\n formatCollection.bulletFormatList = this.isBulletFormatList(node);\n }\n return formatCollection;\n };\n ToolbarStatus.isFontColor = function (docElement, node) {\n var color = node.style && node.style.color;\n if ((color === null || color === undefined || color === '') && node.nodeType !== 3) {\n color = this.getComputedStyle(docElement, node, 'color');\n }\n if (color !== null && color !== '' && color !== undefined) {\n return color;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isLink = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'a') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isBackgroundColor = function (node) {\n var backColor = node.style && node.style.backgroundColor;\n if (backColor !== null && backColor !== '' && backColor !== undefined) {\n return backColor;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontSize = function (docElement, node, fontSize) {\n var size = node.style && node.style.fontSize;\n if ((size === null || size === undefined || size === '') && node.nodeType !== 3 &&\n node.parentElement.classList.contains('e-content')) {\n size = this.getComputedStyle(docElement, node, 'font-size');\n }\n if ((size !== null && size !== '' && size !== undefined)\n && (fontSize === null || fontSize === undefined || (fontSize.indexOf(size) > -1))) {\n return size;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontName = function (docElement, node, fontName) {\n var name = node.style && node.style.fontFamily;\n if ((name === null || name === undefined || name === '') && node.nodeType !== 3) {\n name = this.getComputedStyle(docElement, node, 'font-family');\n }\n var index = null;\n if ((name !== null && name !== '' && name !== undefined)\n && (fontName === null || fontName === undefined || (fontName.filter(function (value, pos) {\n // eslint-disable-next-line\n var pattern = new RegExp(name, 'i');\n if ((value.replace(/\"/g, '').replace(/ /g, '').toLowerCase() === name.replace(/\"/g, '').replace(/ /g, '').toLowerCase()) ||\n (value.split(',')[0] && value.split(',')[0].search(pattern) > -1)) {\n index = pos;\n }\n }) && (index !== null)))) {\n // eslint-disable-next-line\n return (index !== null) ? fontName[index] : name.replace(/\"/g, '');\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isOrderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ol') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isUnorderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ul') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isAlignment = function (node) {\n var align = node.style && node.style.textAlign;\n if (align === 'left') {\n return 'justifyleft';\n }\n else if (align === 'center') {\n return 'justifycenter';\n }\n else if (align === 'right') {\n return 'justifyright';\n }\n else if (align === 'justify') {\n return 'justifyfull';\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFormats = function (node, formatNode) {\n if (((formatNode === undefined || formatNode === null)\n && CONSTANT.BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) > -1)\n || (formatNode !== null && formatNode !== undefined\n && formatNode.indexOf(node.nodeName.toLocaleLowerCase()) > -1)) {\n return node.nodeName.toLocaleLowerCase();\n }\n else {\n return null;\n }\n };\n ToolbarStatus.getComputedStyle = function (docElement, node, prop) {\n return docElement.defaultView.getComputedStyle(node, null).getPropertyValue(prop);\n };\n ToolbarStatus.isNumberFormatList = function (node) {\n var list = node.style && node.style.listStyleType;\n if (list === 'lower-alpha') {\n return 'Lower Alpha';\n }\n else if (list === 'number') {\n return 'Number';\n }\n else if (list === 'upper-alpha') {\n return 'Upper Alpha';\n }\n else if (list === 'lower-roman') {\n return 'Lower Roman';\n }\n else if (list === 'upper-roman') {\n return 'Upper Roman';\n }\n else if (list === 'lower-greek') {\n return 'Lower Greek';\n }\n else if (list === 'none') {\n return 'None';\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isBulletFormatList = function (node) {\n var list = node.style && node.style.listStyleType;\n if (list === 'circle') {\n return 'Circle';\n }\n else if (list === 'square') {\n return 'Square';\n }\n else if (list === 'none') {\n return 'None';\n }\n else if (list === 'disc') {\n return 'Disc';\n }\n else {\n return null;\n }\n };\n return ToolbarStatus;\n}());\nexport { ToolbarStatus };\n","import * as events from '../base/constant';\nimport { ToolbarStatus } from '../../editor-manager/plugin/toolbar-status';\nimport { getDefaultHtmlTbStatus } from '../../common/util';\n/**\n * HtmlToolbarStatus module for refresh the toolbar status\n */\nvar HtmlToolbarStatus = /** @class */ (function () {\n function HtmlToolbarStatus(parent) {\n this.parent = parent;\n this.toolbarStatus = this.prevToolbarStatus = getDefaultHtmlTbStatus();\n this.addEventListener();\n }\n HtmlToolbarStatus.prototype.addEventListener = function () {\n this.parent.on(events.toolbarRefresh, this.onRefreshHandler, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n HtmlToolbarStatus.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarRefresh, this.onRefreshHandler);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n HtmlToolbarStatus.prototype.onRefreshHandler = function (args) {\n if (this.parent.readonly) {\n return;\n }\n var fontsize = [];\n var fontName = [];\n var formats = [];\n this.parent.fontSize.items.forEach(function (item) {\n fontsize.push(item.value);\n });\n this.parent.fontFamily.items.forEach(function (item) {\n fontName.push(item.value);\n });\n this.parent.format.types.forEach(function (item) {\n formats.push(item.value.toLocaleLowerCase());\n });\n this.toolbarStatus = ToolbarStatus.get(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel(), formats, fontsize, fontName, args.documentNode);\n var tbStatusString = JSON.stringify(this.toolbarStatus);\n this.parent.notify(events.toolbarUpdated, this.toolbarStatus);\n if (JSON.stringify(this.prevToolbarStatus) !== tbStatusString) {\n this.parent.notify(events.updateTbItemsStatus, { html: JSON.parse(tbStatusString), markdown: null });\n this.prevToolbarStatus = JSON.parse(tbStatusString);\n }\n };\n return HtmlToolbarStatus;\n}());\nexport { HtmlToolbarStatus };\n","import { getEditValue } from '../base/util';\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} serviceLocator - specifies the service.\n * @returns {void}\n */\n function ContentRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n }\n /**\n * The function is used to render Rich Text Editor content div\n *\n * @returns {void}\n * @hidden\n\n */\n ContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var div = this.parent.createElement('div', { className: 'e-rte-content', id: this.parent.getID() + 'rte-view' });\n var rteContent = getEditValue(rteObj.value, rteObj);\n this.editableElement = this.parent.createElement('div', {\n className: 'e-content',\n id: this.parent.getID() + '_rte-edit-view',\n attrs: {\n 'contenteditable': 'true'\n },\n innerHTML: rteContent\n });\n div.appendChild(this.editableElement);\n this.setPanel(div);\n rteObj.element.appendChild(div);\n };\n /**\n * Get the content div element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the return element.\n * @hidden\n\n */\n ContentRender.prototype.getEditPanel = function () {\n return this.editableElement;\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string element.\n */\n ContentRender.prototype.getText = function () {\n var textString = this.getEditPanel().innerText;\n return textString === '\\n' ? '' : textString;\n };\n /**\n * Set the content div element of RichTextEditor\n *\n * @param {Element} panel - specifies the panel element.\n * @returns {void}\n * @hidden\n\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {Document} - specifies the document.\n * @hidden\n\n */\n ContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return ContentRender;\n}());\nexport { ContentRender };\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 { ContentRender } from '../renderer/content-renderer';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getEditValue } from '../base/util';\nvar IFRAMEHEADER = \"\\n \\n \\n \\n \\n \\n \";\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n\n */\nvar IframeContentRender = /** @class */ (function (_super) {\n __extends(IframeContentRender, _super);\n function IframeContentRender() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * The function is used to render Rich Text Editor iframe\n *\n * @hidden\n\n */\n IframeContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var rteContent = getEditValue(rteObj.value, rteObj);\n var iFrameBodyContent = '' +\n rteContent + '';\n var iFrameContent = IFRAMEHEADER + iFrameBodyContent;\n var iframe = this.parent.createElement('iframe', {\n id: this.parent.getID() + '_rte-view',\n className: 'e-rte-content',\n styles: 'display:block;',\n attrs: { 'srcdoc': iFrameContent }\n });\n this.setPanel(iframe);\n rteObj.element.appendChild(iframe);\n iframe.contentDocument.body.id = this.parent.getID() + '_rte-edit-view';\n iframe.contentDocument.body.setAttribute('aria-owns', this.parent.getID());\n iframe.contentDocument.open();\n iFrameContent = this.setThemeColor(iFrameContent, { color: '#333' });\n iframe.contentDocument.write(iFrameContent);\n iframe.contentDocument.close();\n if (rteObj.enableRtl) {\n this.contentPanel.contentDocument.body.setAttribute('class', 'e-rtl');\n }\n };\n IframeContentRender.prototype.setThemeColor = function (content, styles) {\n var fontColor = getComputedStyle(this.parent.element, '.e-richtexteditor').getPropertyValue('color');\n return content.replace(styles.color, fontColor);\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n\n */\n IframeContentRender.prototype.getEditPanel = function () {\n var editNode;\n if (!isNullOrUndefined(this.contentPanel.contentDocument)) {\n editNode = this.contentPanel.contentDocument.body;\n }\n else {\n editNode = this.parent.inputElement;\n }\n return editNode;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {void}\n * @hidden\n\n */\n IframeContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return IframeContentRender;\n}(ContentRender));\nexport { IframeContentRender };\n","import { select, detach, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { getIndex, toObjectLowerCase } from '../base/util';\nimport { templateItems, tools } from '../models/items';\n/**\n * `Color Picker` module is used to handle ColorPicker actions.\n */\nvar ColorPickerInput = /** @class */ (function () {\n function ColorPickerInput(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n ColorPickerInput.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n /**\n * renderColorPickerInput method\n *\n * @param {IColorPickerRenderArgs} args - specify the arguments.\n * @returns {void}\n * @hidden\n\n */\n ColorPickerInput.prototype.renderColorPickerInput = function (args) {\n var _this = this;\n this.initializeInstance();\n var suffixID = args.containerType;\n var tbElement = args.container;\n var targetID;\n var options;\n templateItems.forEach(function (item) {\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'fontcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_FontColor_Target';\n var fontNode = _this.parent.createElement('input');\n fontNode.id = targetID;\n fontNode.classList.add(classes.CLS_FONT_COLOR_TARGET);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n fontNode.classList.add(allClassName[i]);\n }\n }\n }\n document.body.appendChild(fontNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS + ' ' + _this.parent.cssClass,\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_FontColor', tbElement),\n target: (targetID)\n };\n _this.fontColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'fontcolor');\n _this.fontColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'fontcolor', _this.fontColorPicker);\n break;\n }\n case 'backgroundcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_BackgroundColor_Target';\n var backNode = _this.parent.createElement('input');\n backNode.id = targetID;\n backNode.classList.add(classes.CLS_BACKGROUND_COLOR_TARGET);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n backNode.classList.add(allClassName[i]);\n }\n }\n }\n document.body.appendChild(backNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + classes.CLS_RTE_ELEMENTS + ' ' + classes.CLS_ICONS + ' ' + _this.parent.cssClass,\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_BackgroundColor', tbElement),\n target: (targetID)\n };\n _this.backgroundColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'backgroundcolor');\n _this.backgroundColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'backgroundcolor', _this.backgroundColorPicker, _this.defaultColorPicker);\n break;\n }\n }\n }\n });\n if (this.parent.inlineMode.enable) {\n this.setCssClass({ cssClass: this.parent.cssClass });\n }\n };\n ColorPickerInput.prototype.destroy = function () {\n this.removeEventListener();\n this.destroyColorPicker();\n };\n /**\n * destroyColorPicker method\n *\n * @returns {void}\n * @hidden\n\n */\n ColorPickerInput.prototype.destroyColorPicker = function () {\n if (this.fontColorPicker && !this.fontColorPicker.isDestroyed) {\n this.fontColorPicker.destroy();\n }\n if (this.backgroundColorPicker && !this.backgroundColorPicker.isDestroyed) {\n this.backgroundColorPicker.destroy();\n }\n if (this.fontColorDropDown && !this.fontColorDropDown.isDestroyed) {\n var innerEle = this.fontColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n detach(innerEle);\n }\n this.fontColorDropDown.destroy();\n }\n if (this.backgroundColorDropDown && !this.backgroundColorDropDown.isDestroyed) {\n var innerEle = this.backgroundColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n this.defaultColorPicker = innerEle.children[0].style.borderBottomColor;\n detach(innerEle);\n }\n this.backgroundColorDropDown.destroy();\n }\n };\n ColorPickerInput.prototype.setRtl = function (args) {\n if (this.fontColorPicker) {\n this.fontColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.fontColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.backgroundColorPicker) {\n this.backgroundColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.backgroundColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n ColorPickerInput.prototype.setCssClass = function (e) {\n this.updateCss(this.fontColorPicker, this.fontColorDropDown, e);\n this.updateCss(this.backgroundColorPicker, this.backgroundColorDropDown, e);\n };\n ColorPickerInput.prototype.updateCss = function (colorPickerObj, dropDownObj, e) {\n if (colorPickerObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass + ' ' + e.cssClass).trim() });\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n ColorPickerInput.prototype.addEventListener = function () {\n this.parent.on(events.toolbarRenderComplete, this.renderColorPickerInput, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.destroyColorPicker, this.destroyColorPicker, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n };\n ColorPickerInput.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var element;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontColor':\n if (this.fontColorPicker) {\n for (var _b = 0, _c = Object.keys(newProp.fontColor); _b < _c.length; _b++) {\n var font = _c[_b];\n switch (font) {\n case 'default': {\n this.fontColorPicker.setProperties({ value: newProp.fontColor.default });\n element = this.fontColorDropDown.element;\n var fontBorder = element.querySelector('.' + this.tools['fontcolor'].icon);\n fontBorder.style.borderBottomColor = newProp.fontColor.default;\n break;\n }\n case 'mode':\n this.fontColorPicker.setProperties({ mode: newProp.fontColor.mode });\n break;\n case 'columns':\n this.fontColorPicker.setProperties({ columns: newProp.fontColor.columns });\n break;\n case 'colorCode':\n this.fontColorPicker.setProperties({ presetColors: newProp.fontColor.colorCode });\n break;\n case 'modeSwitcher':\n this.fontColorPicker.setProperties({ modeSwitcher: newProp.fontColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n case 'backgroundColor':\n if (this.backgroundColorPicker) {\n for (var _d = 0, _e = Object.keys(newProp.backgroundColor); _d < _e.length; _d++) {\n var background = _e[_d];\n switch (background) {\n case 'default': {\n this.backgroundColorPicker.setProperties({ value: newProp.backgroundColor.default });\n element = this.backgroundColorDropDown.element;\n var backgroundBorder = element.querySelector('.' + this.tools['backgroundcolor'].icon);\n backgroundBorder.style.borderBottomColor = newProp.backgroundColor.default;\n break;\n }\n case 'mode':\n this.backgroundColorPicker.setProperties({ mode: newProp.backgroundColor.mode });\n break;\n case 'columns':\n this.backgroundColorPicker.setProperties({ columns: newProp.backgroundColor.columns });\n break;\n case 'colorCode':\n this.backgroundColorPicker.setProperties({ presetColors: newProp.backgroundColor.colorCode });\n break;\n case 'modeSwitcher':\n this.backgroundColorPicker.setProperties({ modeSwitcher: newProp.backgroundColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n }\n }\n };\n ColorPickerInput.prototype.removeEventListener = function () {\n this.parent.off(events.toolbarRenderComplete, this.renderColorPickerInput);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.destroyColorPicker, this.destroyColorPicker);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.bindCssClass, this.setCssClass);\n };\n return ColorPickerInput;\n}());\nexport { ColorPickerInput };\n","import * as events from '../base/constant';\nimport { detach, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * XhtmlValidation module called when set enableXhtml as true\n */\nvar XhtmlValidation = /** @class */ (function () {\n function XhtmlValidation(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n XhtmlValidation.prototype.addEventListener = function () {\n this.parent.on(events.xhtmlValidation, this.enableXhtmlValidation, this);\n this.parent.on(events.destroy, this.removeEventListener, this);\n };\n XhtmlValidation.prototype.removeEventListener = function () {\n this.parent.off(events.xhtmlValidation, this.enableXhtmlValidation);\n this.parent.off(events.destroy, this.removeEventListener);\n };\n XhtmlValidation.prototype.enableXhtmlValidation = function () {\n if (this.parent.enableXhtml) {\n if (isNullOrUndefined(this.parent.inputElement)) {\n this.currentElement = this.parent.element;\n }\n else {\n this.currentElement = this.parent.inputElement;\n }\n this.clean(this.currentElement);\n this.ImageTags();\n this.removeTags();\n this.RemoveUnsupported();\n this.currentElement.innerHTML = this.selfEncloseValidation(this.currentElement.innerHTML, this.currentElement.innerText === '\\n' ?\n this.currentElement.innerText.length : this.currentElement.innerText.trim().length);\n this.parent.setProperties({ value: this.currentElement.innerHTML }, true);\n }\n };\n /**\n * @param {string} currentValue - specifies the string value.\n * @param {number} valueLength - specifies the length of the current value.\n * @returns {void}\n\n */\n XhtmlValidation.prototype.selfEncloseValidation = function (currentValue, valueLength) {\n if (valueLength === 0 && currentValue.indexOf('table') < 0 && currentValue.indexOf('img') < 0) {\n var arrayValue = currentValue.split(' ');\n arrayValue[arrayValue.length - 1] = '​' + arrayValue[arrayValue.length - 1];\n currentValue = arrayValue.join('');\n }\n currentValue = currentValue.replace(/
    /g, '
    ').replace(/
    /g, '
    ').replace(/ /g, ' ');\n var valueTemp;\n var valueDupe = [];\n var valueOriginal = [];\n var imgRegexp = [//gi, //gi, //gi, //gi, //gi,\n //gi, //gi, //gi, //gi, //gi,\n //gi, //gi];\n for (var j = 0; j < imgRegexp.length; j++) {\n valueTemp = imgRegexp[j].exec(currentValue);\n while ((valueTemp) !== null) {\n valueDupe.push(valueTemp[0].toString());\n valueTemp = imgRegexp[j].exec(currentValue);\n }\n valueOriginal = valueDupe.slice(0);\n for (var i = 0; i < valueDupe.length; i++) {\n if (valueDupe[i].indexOf('/') === -1 || valueDupe[i].lastIndexOf('/') !== valueDupe[i].length - 2) {\n valueDupe[i] = valueDupe[i].substr(0, valueDupe[i].length - 1) + ' /' +\n valueDupe[i].substr(valueDupe[i].length - 1, valueDupe[i].length);\n }\n }\n for (var g = 0; g <= valueDupe.length - 1; g++) {\n currentValue = currentValue.replace(valueOriginal[g], valueDupe[g]);\n }\n }\n return currentValue;\n };\n XhtmlValidation.prototype.clean = function (node) {\n for (var n = 0; n < node.childNodes.length; n++) {\n var child = node.childNodes[n];\n if (child.nodeType === 8 || child.nodeName === 'V:IMAGE') {\n node.removeChild(child);\n n--;\n }\n else if (child.nodeType === 1) {\n this.clean(child);\n }\n }\n return this.currentElement.innerHTML;\n };\n XhtmlValidation.prototype.ImageTags = function () {\n var imgNodes = this.currentElement.querySelectorAll('IMG');\n for (var i = imgNodes.length - 1; i >= 0; i--) {\n if (!imgNodes[i].hasAttribute('alt')) {\n var img = imgNodes[i];\n img.setAttribute('alt', '');\n }\n }\n };\n XhtmlValidation.prototype.removeTags = function () {\n var removeAttribute = [['br', 'ul'], ['br', 'ol'], ['table', 'span'], ['div', 'span'], ['p', 'span']];\n for (var i = 0; i < removeAttribute.length; i++) {\n this.RemoveElementNode(removeAttribute[i][0], removeAttribute[i][1]);\n }\n };\n XhtmlValidation.prototype.RemoveElementNode = function (rmvNode, parentNode) {\n var parentArray = this.currentElement.querySelectorAll(parentNode);\n for (var i = 0; i < parentArray.length; i++) {\n var rmvArray = parentArray[i].querySelectorAll(rmvNode);\n for (var j = rmvArray.length; j > 0; j--) {\n detach(rmvArray[j - 1]);\n }\n }\n };\n XhtmlValidation.prototype.RemoveUnsupported = function () {\n var underlineEle = this.currentElement.querySelectorAll('u');\n for (var i = underlineEle.length - 1; i >= 0; i--) {\n var spanEle = this.parent.createElement('span');\n spanEle.style.textDecoration = 'underline';\n spanEle.innerHTML = underlineEle[i].innerHTML;\n underlineEle[i].parentNode.insertBefore(spanEle, underlineEle[i]);\n detach(underlineEle[i]);\n }\n var strongEle = this.currentElement.querySelectorAll('strong');\n for (var i = strongEle.length - 1; i >= 0; i--) {\n var boldEle = this.parent.createElement('b');\n boldEle.innerHTML = strongEle[i].innerHTML;\n strongEle[i].parentNode.insertBefore(boldEle, strongEle[i]);\n detach(strongEle[i]);\n }\n var attrArray = ['language', 'role', 'target', 'contenteditable', 'cellspacing',\n 'cellpadding', 'border', 'valign', 'colspan'];\n for (var i = 0; i <= attrArray.length; i++) {\n this.RemoveAttributeByName(attrArray[i]);\n }\n };\n XhtmlValidation.prototype.RemoveAttributeByName = function (attrName) {\n if (this.currentElement.firstChild !== null) {\n if (this.currentElement.firstChild.nodeType !== 3) {\n for (var i = 0; i < this.currentElement.childNodes.length; i++) {\n var ele = this.currentElement.childNodes[i];\n if (ele.nodeType !== 3 && ele.nodeName !== 'TABLE' && ele.nodeName !== 'TBODY' && ele.nodeName !== 'THEAD' &&\n ele.nodeName !== 'TH' && ele.nodeName !== 'TR' && ele.nodeName !== 'TD') {\n if (ele.hasAttribute(attrName)) {\n ele.removeAttribute(attrName);\n }\n if (ele.hasChildNodes()) {\n for (var j = 0; j < ele.childNodes.length; j++) {\n var childEle = ele.childNodes[j];\n if (childEle.nodeType !== 3 && childEle.nodeName !== 'TABLE' && childEle.nodeName !== 'TBODY' &&\n childEle.nodeName !== 'THEAD' && childEle.nodeName !== 'TH' && childEle.nodeName !== 'TR' &&\n childEle.nodeName !== 'TD' && childEle.hasAttribute(attrName) &&\n !childEle.classList.contains('e-mention-chip')) {\n childEle.removeAttribute(attrName);\n }\n if (childEle.hasChildNodes()) {\n for (var k = 0; k < childEle.childNodes.length; k++) {\n if (childEle.childNodes[k].nodeType !== 3 && childEle.childNodes[k].nodeName !== 'TABLE' &&\n childEle.childNodes[k].nodeName !== 'TBODY' && childEle.childNodes[k].nodeName !== 'THEAD' &&\n childEle.childNodes[k].nodeName !== 'TH' && childEle.childNodes[k].nodeName !== 'TR'\n && childEle.childNodes[k].nodeName !== 'TD'\n && childEle.childNodes[k].hasAttribute(attrName)) {\n childEle.childNodes[k].removeAttribute(attrName);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n return XhtmlValidation;\n}());\nexport { XhtmlValidation };\n","import * as events from '../base/constant';\nimport { isNullOrUndefined, closest, attributes, removeClass, addClass, Browser, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { HTMLFormatter } from '../formatter/html-formatter';\nimport { RenderType } from '../base/enum';\nimport * as classes from '../base/classes';\nimport { HtmlToolbarStatus } from './html-toolbar-status';\nimport { IframeContentRender } from '../renderer/iframe-content-renderer';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { ColorPickerInput } from './color-picker';\nimport { NodeSelection } from '../../selection/selection';\nimport { InsertHtml } from '../../editor-manager/plugin/inserthtml';\nimport { getTextNodesUnder, sanitizeHelper, getDefaultValue } from '../base/util';\nimport { isIDevice } from '../../common/util';\nimport { XhtmlValidation } from './xhtml-validation';\nimport { ON_BEGIN } from './../../common/constant';\n/**\n * `HtmlEditor` module is used to HTML editor\n */\nvar HtmlEditor = /** @class */ (function () {\n function HtmlEditor(parent, serviceLocator) {\n this.rangeCollection = [];\n this.isImageDelete = false;\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.xhtmlValidation = new XhtmlValidation(parent);\n this.addEventListener();\n }\n /**\n * Destroys the Markdown.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.sanitizeHelper = function (value) {\n value = sanitizeHelper(value, this.parent);\n return value;\n };\n HtmlEditor.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.nodeSelectionObj = new NodeSelection();\n this.colorPickerModule = new ColorPickerInput(this.parent, this.locator);\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on(events.htmlToolbarClick, this.onToolbarClick, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.keyUp, this.onKeyUp, this);\n this.parent.on(events.renderColorPicker, this.renderColorPicker, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.selectAll, this.selectAll, this);\n this.parent.on(events.selectRange, this.selectRange, this);\n this.parent.on(events.getSelectedHtml, this.getSelectedHtml, this);\n this.parent.on(events.selectionSave, this.onSelectionSave, this);\n this.parent.on(events.selectionRestore, this.onSelectionRestore, this);\n this.parent.on(events.readOnlyMode, this.updateReadOnly, this);\n this.parent.on(events.paste, this.onPaste, this);\n this.parent.on(events.tableclass, this.isTableClassAdded, this);\n };\n HtmlEditor.prototype.updateReadOnly = function () {\n if (this.parent.readonly) {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'false' });\n addClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n else {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'true' });\n removeClass([this.parent.element], classes.CLS_RTE_READONLY);\n }\n };\n HtmlEditor.prototype.onSelectionSave = function () {\n var currentDocument = this.contentRenderer.getDocument();\n var range = this.nodeSelectionObj.getRange(currentDocument);\n this.saveSelection = this.nodeSelectionObj.save(range, currentDocument);\n };\n HtmlEditor.prototype.onSelectionRestore = function (e) {\n this.parent.isBlur = false;\n this.contentRenderer.getEditPanel().focus();\n if (isNullOrUndefined(e.items) || e.items) {\n this.saveSelection.restore();\n }\n };\n HtmlEditor.prototype.isTableClassAdded = function () {\n var tableElement = this.parent.inputElement.querySelectorAll('table');\n for (var i = 0; i < tableElement.length; i++) {\n if (!tableElement[i].classList.contains('e-rte-table')) {\n tableElement[i].classList.add('e-rte-table');\n }\n }\n };\n HtmlEditor.prototype.onKeyUp = function (e) {\n var args = e.args;\n var restrictKeys = [8, 9, 13, 16, 17, 18, 20, 27, 37, 38, 39, 40, 44, 45, 46, 91,\n 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123];\n var range = this.parent.getRange();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var pointer;\n var isRootParent = false;\n if (restrictKeys.indexOf(args.keyCode) < 0 && !args.shiftKey && !args.ctrlKey && !args.altKey) {\n pointer = range.startOffset;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n range.startContainer.nodeName === '#text' ? range.startContainer.parentElement !== this.parent.inputElement ? range.startContainer.parentElement.classList.add('currentStartMark')\n : isRootParent = true : range.startContainer.classList.add('currentStartMark');\n if (range.startContainer.textContent.charCodeAt(0) === 8203) {\n pointer = range.startOffset === 0 ? range.startOffset : range.startOffset - 1;\n range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);\n }\n var previousLength = this.parent.inputElement.innerHTML.length;\n var currentLength = this.parent.inputElement.innerHTML.replace(regEx, '').length;\n var focusNode = range.startContainer;\n if (previousLength > currentLength && !isRootParent) {\n var currentChild = this.parent.inputElement.firstChild;\n while (!isNOU(currentChild) && currentChild.textContent.replace(regEx, '').trim().length > 0) {\n currentChild.innerHTML = currentChild.innerHTML.replace(regEx, '');\n currentChild = currentChild.nextElementSibling;\n }\n var currentChildNode = this.parent.inputElement.querySelector('.currentStartMark').childNodes;\n if (currentChildNode.length > 1) {\n for (var i = 0; i < currentChildNode.length; i++) {\n if (currentChildNode[i].nodeName === '#text' && currentChildNode[i].textContent.length === 0) {\n detach(currentChildNode[i]);\n i--;\n }\n if (focusNode.textContent.replace(regEx, '') === currentChildNode[i].textContent) {\n pointer = focusNode.textContent.length > 1 ? focusNode.textContent.length - 1 : focusNode.textContent.length;\n focusNode = currentChildNode[i];\n }\n }\n }\n else if (currentChildNode.length === 1) {\n if (focusNode.textContent.replace(regEx, '') === currentChildNode[0].textContent) {\n focusNode = currentChildNode[0];\n }\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), focusNode, pointer);\n }\n var currentElem = this.parent.inputElement.querySelector('.currentStartMark');\n if (!isNOU(currentElem)) {\n currentElem.classList.remove('currentStartMark');\n if (currentElem.getAttribute('class').trim() === '') {\n currentElem.removeAttribute('class');\n }\n }\n if (!isNOU(range.startContainer.previousSibling) && !isNOU(range.startContainer.previousSibling.parentElement) &&\n range.startContainer.parentElement === range.startContainer.previousSibling.parentElement &&\n range.startContainer.previousSibling.textContent.charCodeAt(0) === 8203 &&\n range.startContainer.previousSibling.textContent.length <= 1) {\n range.startContainer.previousSibling.textContent = range.startContainer.previousSibling.textContent.replace(regEx, '');\n }\n if (range.endContainer.textContent.charCodeAt(range.endOffset) === 8203) {\n pointer = range.startOffset;\n range.endContainer.textContent = range.endContainer.textContent.replace(regEx, '');\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);\n }\n }\n };\n HtmlEditor.prototype.onKeyDown = function (e) {\n var _this = this;\n var currentRange;\n var args = e.args;\n if (Browser.info.name === 'chrome') {\n currentRange = this.parent.getRange();\n this.backSpaceCleanup(e, currentRange);\n this.deleteCleanup(e, currentRange);\n }\n if (args.keyCode === 9 && this.parent.enableTabKey) {\n if (!isNOU(args.target) && isNullOrUndefined(closest(args.target, '.e-rte-toolbar'))) {\n var range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());\n var parentNode = this.nodeSelectionObj.getParentNodeCollection(range);\n if (!((parentNode[0].nodeName === 'LI' || closest(parentNode[0], 'li') ||\n closest(parentNode[0], 'table')) && range.startOffset === 0)) {\n args.preventDefault();\n if (!args.shiftKey) {\n InsertHtml.Insert(this.contentRenderer.getDocument(), '    ');\n this.rangeCollection.push(this.nodeSelectionObj.getRange(this.contentRenderer.getDocument()));\n }\n else if (this.rangeCollection.length > 0 &&\n this.rangeCollection[this.rangeCollection.length - 1].startContainer.textContent.length === 4) {\n var textCont = this.rangeCollection[this.rangeCollection.length - 1].startContainer;\n this.nodeSelectionObj.setSelectionText(this.contentRenderer.getDocument(), textCont, textCont, 0, textCont.textContent.length);\n InsertHtml.Insert(this.contentRenderer.getDocument(), document.createTextNode(''));\n this.rangeCollection.pop();\n }\n }\n }\n }\n if (e.args.action === 'space' ||\n e.args.action === 'enter' ||\n e.args.keyCode === 13) {\n this.spaceLink(e.args);\n if (this.parent.editorMode === 'HTML' && !this.parent.readonly) {\n var currentLength = this.parent.getText().trim().length;\n var selectionLength = this.parent.getSelection().length;\n var totalLength = (currentLength - selectionLength) + 1;\n if (!(this.parent.maxLength === -1 || totalLength <= this.parent.maxLength) &&\n e.args.keyCode === 13) {\n e.args.preventDefault();\n return;\n }\n else {\n this.parent.notify(events.enterHandler, { args: e.args });\n }\n }\n }\n if (e.args.action === 'space') {\n var currentRange_1 = this.parent.getRange();\n var editorValue = currentRange_1.startContainer.textContent.slice(0, currentRange_1.startOffset);\n var orderedList_1 = this.isOrderedList(editorValue);\n var unOrderedList = this.isUnOrderedList(editorValue);\n if (orderedList_1 && !unOrderedList || unOrderedList && !orderedList_1) {\n var eventArgs_1 = {\n callBack: null,\n event: e.args,\n name: 'keydown-handler'\n };\n var actionBeginArgs = {\n cancel: false,\n item: { command: 'Lists', subCommand: orderedList_1 ? 'OL' : 'UL' },\n name: 'actionBegin',\n originalEvent: e.args,\n requestType: orderedList_1 ? 'OL' : 'UL'\n };\n this.parent.trigger(events.actionBegin, actionBeginArgs, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n _this.parent.formatter.editorManager.observer.notify(ON_BEGIN, eventArgs_1);\n _this.parent.trigger(events.actionComplete, {\n editorMode: _this.parent.editorMode,\n elements: _this.parent.formatter.editorManager.domNode.blockNodes(),\n event: e.args,\n name: events.actionComplete,\n range: _this.parent.getRange(),\n requestType: orderedList_1 ? 'OL' : 'UL'\n });\n }\n });\n }\n }\n if (Browser.info.name === 'chrome' && (!isNullOrUndefined(this.rangeElement) && !isNullOrUndefined(this.oldRangeElement) ||\n !isNullOrUndefined(this.deleteRangeElement) && !isNullOrUndefined(this.deleteOldRangeElement)) &&\n currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.rangeElement = null;\n this.oldRangeElement = null;\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n if (!this.isImageDelete) {\n args.preventDefault();\n }\n args.preventDefault();\n }\n };\n HtmlEditor.prototype.isOrderedList = function (editorValue) {\n editorValue = editorValue.replace(/\\u200B/g, '');\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.isUnOrderedList = function (editorValue) {\n editorValue = editorValue.replace(/\\u200B/g, '');\n var ulListStartRegex = [/^[*]$/, /^[-]$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < ulListStartRegex.length; i++) {\n if (ulListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.backSpaceCleanup = function (e, currentRange) {\n var isLiElement = false;\n if (e.args.code === 'Backspace' && e.args.keyCode === 8 && currentRange.startOffset === 0 &&\n currentRange.endOffset === 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.textContent.length > 0 &&\n currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH') {\n var checkNode = currentRange.startContainer.nodeName === '#text' ? currentRange.startContainer.parentElement : currentRange.startContainer;\n if (!this.parent.formatter.editorManager.domNode.isBlockNode(checkNode) &&\n !isNOU(checkNode.previousSibling) && checkNode.previousSibling.nodeName === 'BR') {\n return;\n }\n this.rangeElement = this.getRootBlockNode(currentRange.startContainer);\n if (this.rangeElement.tagName === 'OL' || this.rangeElement.tagName === 'UL') {\n var liElement = this.getRangeLiNode(currentRange.startContainer);\n if (liElement.previousElementSibling && liElement.previousElementSibling.childElementCount > 0) {\n this.oldRangeElement = liElement.previousElementSibling.lastElementChild.nodeName === 'BR' ?\n liElement.previousElementSibling : liElement.previousElementSibling.lastElementChild;\n if (!isNullOrUndefined(liElement.lastElementChild) && liElement.lastElementChild.nodeName !== 'BR') {\n this.rangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.rangeElement = liElement;\n }\n }\n }\n else if (this.rangeElement === this.parent.inputElement || this.rangeElement.tagName === 'TABLE' ||\n (!isNullOrUndefined(this.rangeElement.previousElementSibling) && this.rangeElement.previousElementSibling.tagName === 'TABLE')) {\n return;\n }\n else {\n this.oldRangeElement = this.rangeElement.previousElementSibling;\n }\n if (isNullOrUndefined(this.oldRangeElement)) {\n return;\n }\n else {\n if (this.oldRangeElement.tagName === 'OL' || this.oldRangeElement.tagName === 'UL') {\n this.oldRangeElement = this.oldRangeElement.lastElementChild.lastElementChild\n ? this.oldRangeElement.lastElementChild.lastElementChild :\n this.oldRangeElement.lastElementChild;\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), \n // eslint-disable-next-line\n this.oldRangeElement, this.oldRangeElement.childNodes.length);\n if (this.oldRangeElement.querySelector('BR')) {\n detach(this.oldRangeElement.querySelector('BR'));\n }\n if (!isNullOrUndefined(this.rangeElement) && this.oldRangeElement !== this.rangeElement) {\n while (this.rangeElement.firstChild) {\n this.oldRangeElement.appendChild(this.rangeElement.childNodes[0]);\n }\n // eslint-disable-next-line\n !isLiElement ? detach(this.rangeElement) : detach(this.rangeElement.parentElement);\n this.oldRangeElement.normalize();\n }\n }\n }\n };\n HtmlEditor.prototype.deleteCleanup = function (e, currentRange) {\n var isLiElement = false;\n var liElement;\n var rootElement;\n if (e.args.code === 'Delete' && e.args.keyCode === 46 &&\n this.parent.contentModule.getText().trim().length !== 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.parentElement.tagName !== 'TD' &&\n currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.deleteRangeElement = rootElement = this.getRootBlockNode(currentRange.startContainer);\n if (this.deleteRangeElement.tagName === 'OL' || this.deleteRangeElement.tagName === 'UL') {\n liElement = this.getRangeLiNode(currentRange.startContainer);\n if (liElement.nextElementSibling && liElement.nextElementSibling.childElementCount > 0\n && !liElement.nextElementSibling.querySelector('BR')) {\n if (!isNullOrUndefined(liElement.lastElementChild)) {\n this.deleteRangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.deleteRangeElement = liElement;\n }\n }\n else {\n this.deleteRangeElement = this.getRangeElement(liElement);\n }\n }\n else if (this.deleteRangeElement.nodeType === 3 || (this.deleteRangeElement.tagName === 'TABLE' ||\n (!isNullOrUndefined(this.deleteRangeElement.nextElementSibling) && this.deleteRangeElement.nextElementSibling.tagName === 'TABLE'))) {\n return;\n }\n if (this.getCaretIndex(currentRange, this.deleteRangeElement) === this.deleteRangeElement.textContent.length) {\n if (!isNullOrUndefined(liElement)) {\n if (isLiElement || !isNullOrUndefined(liElement.nextElementSibling)) {\n this.deleteOldRangeElement = this.getRangeElement(liElement.nextElementSibling);\n }\n else {\n this.deleteOldRangeElement = rootElement.nextElementSibling;\n }\n }\n else {\n this.deleteOldRangeElement = this.deleteRangeElement.nextElementSibling;\n }\n if (isNullOrUndefined(this.deleteOldRangeElement)) {\n return;\n }\n else {\n if (currentRange.startOffset === 0 && currentRange.endOffset === 1 &&\n this.deleteRangeElement.childNodes[0].nodeName === 'IMG') {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement, 0, 1);\n this.isImageDelete = true;\n }\n else {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement.childNodes.length);\n this.isImageDelete = false;\n }\n if (this.deleteRangeElement.querySelector('BR')) {\n detach(this.deleteRangeElement.querySelector('BR'));\n }\n if (!isNullOrUndefined(this.deleteRangeElement) && (this.deleteOldRangeElement.tagName !== 'OL' && this.deleteOldRangeElement.tagName !== 'UL')\n && this.deleteOldRangeElement !== this.deleteRangeElement) {\n while (this.deleteOldRangeElement.firstChild) {\n this.deleteRangeElement.appendChild(this.deleteOldRangeElement.childNodes[0]);\n }\n if (!isLiElement) {\n detach(this.deleteOldRangeElement);\n }\n else {\n detach(this.deleteOldRangeElement.parentElement);\n }\n this.deleteRangeElement.normalize();\n }\n else {\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n }\n }\n }\n else {\n this.deleteRangeElement = null;\n }\n }\n };\n HtmlEditor.prototype.getCaretIndex = function (currentRange, element) {\n var position = 0;\n if (this.parent.contentModule.getDocument().getSelection().rangeCount !== 0) {\n var preCaretRange = currentRange.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(currentRange.endContainer, currentRange.endOffset);\n position = preCaretRange.toString().length;\n }\n return position;\n };\n HtmlEditor.prototype.getRangeElement = function (element) {\n var rangeElement = element.lastElementChild ? element.lastElementChild.tagName === 'BR' ?\n element.lastElementChild.previousElementSibling ? element.lastElementChild.previousElementSibling\n : element : element.lastElementChild : element;\n return rangeElement;\n };\n HtmlEditor.prototype.getRootBlockNode = function (rangeBlockNode) {\n // eslint-disable-next-line\n for (; rangeBlockNode && this.parent && this.parent.inputElement !== rangeBlockNode; rangeBlockNode = rangeBlockNode) {\n if (rangeBlockNode.parentElement === this.parent.inputElement) {\n break;\n }\n else {\n rangeBlockNode = rangeBlockNode.parentElement;\n }\n }\n return rangeBlockNode;\n };\n HtmlEditor.prototype.getRangeLiNode = function (rangeLiNode) {\n var node = rangeLiNode.parentElement;\n while (node !== this.parent.inputElement) {\n if (node.nodeType === 1 && node.tagName === 'LI') {\n break;\n }\n node = node.parentElement;\n }\n return node;\n };\n HtmlEditor.prototype.onPaste = function (e) {\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (e.text.match(regex)) {\n if (e.isWordPaste) {\n return;\n }\n e.args.preventDefault();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var saveSelection = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var httpRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)))/gi);\n var wwwRegex = new RegExp(/([^\\S]|^)(((www\\.))(\\S+))/gi);\n var enterSplitText = e.text.split('\\n');\n var contentInnerElem = '';\n for (var i = 0; i < enterSplitText.length; i++) {\n if (enterSplitText[i].trim() === '') {\n contentInnerElem += getDefaultValue(this.parent);\n }\n else {\n var contentWithSpace = '';\n var spaceBetweenContent = true;\n var spaceSplit = enterSplitText[i].split(' ');\n for (var j = 0; j < spaceSplit.length; j++) {\n if (spaceSplit[j].trim() === '') {\n contentWithSpace += spaceBetweenContent ? ' ' : ' ';\n }\n else {\n spaceBetweenContent = false;\n contentWithSpace += spaceSplit[j] + ' ';\n }\n }\n if (i === 0) {\n contentInnerElem += '' + contentWithSpace.trim() + '';\n }\n else {\n contentInnerElem += '

    ' + contentWithSpace.trim() + '

    ';\n }\n }\n }\n var divElement = this.parent.createElement('div');\n divElement.setAttribute('class', 'pasteContent');\n divElement.style.display = 'inline';\n divElement.innerHTML = contentInnerElem.replace('¶', '&para');\n var paraElem = divElement.querySelectorAll('span, p');\n for (var i = 0; i < paraElem.length; i++) {\n var splitTextContent = paraElem[i].innerHTML.split(' ');\n var resultSplitContent = '';\n for (var j = 0; j < splitTextContent.length; j++) {\n if (splitTextContent[j].match(httpRegex) || splitTextContent[j].match(wwwRegex)) {\n resultSplitContent += '' + splitTextContent[j] + ' ';\n }\n else {\n resultSplitContent += splitTextContent[j] + ' ';\n }\n }\n paraElem[i].innerHTML = resultSplitContent.trim();\n }\n if (!isNullOrUndefined(this.parent.pasteCleanupModule)) {\n e.callBack(divElement.innerHTML);\n }\n else {\n this.parent.formatter.editorManager.execCommand('insertHTML', null, null, null, divElement);\n }\n }\n };\n HtmlEditor.prototype.spaceLink = function (e) {\n var range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());\n var selectNodeEle = this.nodeSelectionObj.getParentNodeCollection(range);\n var text = range.startContainer.textContent.substr(0, range.endOffset);\n var splitText = text.split(' ');\n var urlText = splitText[splitText.length - 1];\n var urlTextRange = range.startOffset - (text.length - splitText[splitText.length - 1].length);\n urlText = urlText.slice(0, urlTextRange);\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (selectNodeEle[0].nodeName !== 'A' && urlText.match(regex)) {\n var selection = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n var url = urlText.indexOf('http') > -1 ? urlText : 'http://' + urlText;\n var selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n var value = {\n url: url,\n selection: selection, selectParent: selectParent,\n text: urlText,\n title: '',\n target: '_blank'\n };\n this.parent.formatter.process(this.parent, {\n item: {\n 'command': 'Links',\n 'subCommand': 'CreateLink'\n }\n }, e, value);\n }\n };\n HtmlEditor.prototype.onToolbarClick = function (args) {\n var _this = this;\n var save;\n var selectNodeEle;\n var selectParentEle;\n var item = args.item;\n var closestElement = closest(args.originalEvent.target, '.e-rte-quick-popup');\n if (item.command !== 'FormatPainter') {\n if (closestElement && !closestElement.classList.contains('e-rte-inline-popup')) {\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n if (isIDevice() && item.command === 'Images') {\n this.nodeSelectionObj.restore();\n }\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n if (item.command === 'Images') {\n this.parent.notify(events.imageToolbarAction, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Audios') {\n this.parent.notify(events.audioToolbarAction, {\n member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Videos') {\n this.parent.notify(events.videoToolbarAction, {\n member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Links') {\n this.parent.notify(events.linkToolbarAction, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Table') {\n this.parent.notify(events.tableToolbarAction, {\n member: 'table', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n }\n else {\n var linkDialog = document.getElementById(this.parent.getID() + '_rtelink');\n var imageDialog = document.getElementById(this.parent.getID() + '_image');\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n if (isNullOrUndefined(linkDialog) && isNullOrUndefined(imageDialog)) {\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n }\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n switch (item.subCommand) {\n case 'Maximize':\n this.parent.notify(events.enableFullScreen, { args: args });\n break;\n case 'Minimize':\n this.parent.notify(events.disableFullScreen, { args: args });\n break;\n case 'CreateLink':\n this.parent.notify(events.insertLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'RemoveLink':\n this.parent.notify(events.unLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Print':\n this.parent.print();\n break;\n case 'Image':\n this.parent.notify(events.insertImage, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Audio':\n this.parent.notify(events.insertAudio, {\n member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Video':\n this.parent.notify(events.insertVideo, {\n member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'CreateTable':\n this.parent.notify(events.createTable, {\n member: 'table', args: args, selection: save\n });\n break;\n case 'SourceCode':\n this.parent.notify(events.sourceCode, { member: 'viewSource', args: args });\n break;\n case 'Preview':\n this.parent.notify(events.updateSource, { member: 'updateSource', args: args });\n break;\n case 'FontColor':\n case 'BackgroundColor':\n break;\n case 'File':\n this.parent.notify(events.renderFileManager, {\n member: 'fileManager', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n default:\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n break;\n }\n }\n }\n else {\n if (args.originalEvent.detail === 1) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = setTimeout(function () {\n _this.parent.notify(events.formatPainterClick, {\n member: 'formatPainter', args: args\n });\n }, 200);\n }\n else {\n clearTimeout(this.clickTimeout);\n this.parent.notify(events.formatPainterDoubleClick, {\n member: 'formatPainter', args: args\n });\n }\n }\n };\n HtmlEditor.prototype.renderColorPicker = function (args) {\n this.colorPickerModule.renderColorPickerInput(args);\n };\n HtmlEditor.prototype.instantiateRenderer = function () {\n if (this.parent.iframeSettings.enable) {\n this.renderFactory.addRenderer(RenderType.Content, new IframeContentRender(this.parent, this.locator));\n }\n else {\n this.renderFactory.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n }\n };\n HtmlEditor.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.htmlToolbarClick, this.onToolbarClick);\n this.parent.off(events.renderColorPicker, this.renderColorPicker);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.initialLoad, this.instantiateRenderer);\n this.parent.off(events.selectAll, this.selectAll);\n this.parent.off(events.selectRange, this.selectRange);\n this.parent.off(events.getSelectedHtml, this.getSelectedHtml);\n this.parent.off(events.selectionSave, this.onSelectionSave);\n this.parent.off(events.selectionRestore, this.onSelectionRestore);\n this.parent.off(events.readOnlyMode, this.updateReadOnly);\n this.parent.off(events.paste, this.onPaste);\n this.parent.off(events.tableclass, this.isTableClassAdded);\n };\n HtmlEditor.prototype.render = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps, undoRedoTimer: this.parent.undoRedoTimer };\n if (isNullOrUndefined(this.parent.formatter)) {\n var formatterClass = new HTMLFormatter({\n currentDocument: this.contentRenderer.getDocument(),\n element: editElement,\n options: option,\n formatPainterSettings: this.parent.formatPainterSettings\n });\n this.parent.setProperties({ formatter: formatterClass }, true);\n }\n else {\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n if (this.parent.enableXhtml) {\n this.parent.notify(events.xhtmlValidation, {});\n }\n if (this.parent.toolbarSettings.enable) {\n this.toolbarUpdate = new HtmlToolbarStatus(this.parent);\n }\n if (this.parent.inlineMode.enable) {\n if (!isNullOrUndefined(this.parent.fontFamily.default)) {\n editElement.style.fontFamily = this.parent.fontFamily.default;\n }\n if (!isNullOrUndefined(this.parent.fontSize.default)) {\n editElement.style.fontSize = this.parent.fontSize.default;\n }\n }\n this.parent.notify(events.bindOnEnd, {});\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the editor model\n * @returns {void}\n * @hidden\n\n */\n HtmlEditor.prototype.onPropertyChanged = function (e) {\n // On property code change here\n if (!isNullOrUndefined(e.newProp.formatter)) {\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps,\n undoRedoTimer: this.parent.undoRedoTimer };\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n * @hidden\n */\n HtmlEditor.prototype.getModuleName = function () {\n return 'htmlEditor';\n };\n /**\n * For selecting all content in RTE\n *\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectAll = function () {\n var nodes = getTextNodesUnder(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel());\n if (nodes.length > 0) {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), nodes[0], nodes[nodes.length - 1], 0, nodes[nodes.length - 1].textContent.length);\n }\n };\n /**\n * For selecting all content in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectRange = function (e) {\n this.parent.formatter.editorManager.nodeSelection.setRange(this.parent.contentModule.getDocument(), e.range);\n };\n /**\n * For get a selected text in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @hidden\n */\n HtmlEditor.prototype.getSelectedHtml = function (e) {\n e.callBack(this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument()).toString());\n };\n return HtmlEditor;\n}());\nexport { HtmlEditor };\n","import { detach, getUniqueID, append, closest, selectAll, select, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, Browser, isNullOrUndefined, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isCollide, Tooltip } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as classes from '../base/classes';\nimport { RenderType } from '../base/enum';\nimport { setToolbarStatus, updateUndoRedoStatus, isIDevice } from '../base/util';\nimport { BaseToolbar } from './base-toolbar';\nimport { DropDownButtons } from './dropdown-buttons';\nimport { ColorPickerInput } from './color-picker';\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar BaseQuickToolbar = /** @class */ (function () {\n function BaseQuickToolbar(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.isDOMElement = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.popupRenderer = this.renderFactory.getRenderer(RenderType.Popup);\n this.dropDownButtons = new DropDownButtons(this.parent, this.locator);\n this.colorPickerObj = new ColorPickerInput(this.parent, this.locator);\n }\n BaseQuickToolbar.prototype.appendPopupContent = function () {\n this.toolbarElement = this.parent.createElement('div', { className: classes.CLS_QUICK_TB });\n this.element.appendChild(this.toolbarElement);\n };\n /**\n * render method\n *\n * @param {IQuickToolbarOptions} args - specifies the arguments\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.render = function (args) {\n var className;\n if (args.popupType === 'Image') {\n className = classes.CLS_IMAGE_POP;\n }\n else if (args.popupType === 'Inline') {\n className = classes.CLS_INLINE_POP;\n }\n else {\n className = '';\n }\n var popupId = getUniqueID(args.popupType + '_Quick_Popup');\n this.stringItems = args.toolbarItems;\n this.element = this.parent.createElement('div', { id: popupId, className: className + ' ' + classes.CLS_RTE_ELEMENTS });\n this.element.setAttribute('aria-owns', this.parent.getID());\n this.appendPopupContent();\n this.createToolbar(args.toolbarItems, args.mode, args.cssClass);\n this.popupRenderer.renderPopup(this);\n this.addEventListener();\n };\n BaseQuickToolbar.prototype.createToolbar = function (items, mode, cssClass) {\n this.quickTBarObj = new BaseToolbar(this.parent, this.locator);\n this.quickTBarObj.render({\n container: 'quick',\n target: this.toolbarElement,\n items: items,\n mode: mode,\n cssClass: cssClass\n });\n this.quickTBarObj.toolbarObj.refresh();\n };\n BaseQuickToolbar.prototype.setPosition = function (e) {\n var x;\n var y;\n var imgWrapper = closest(e.target, '.e-img-caption');\n var isAligned = (e.target.classList.contains('e-imginline') ||\n e.target.classList.contains('e-imgbreak')) ? false : true;\n var target = !isNOU(imgWrapper) ? imgWrapper : e.target;\n addClass([this.toolbarElement], [classes.CLS_RM_WHITE_SPACE]);\n var targetOffsetTop = target.offsetTop;\n var parentOffsetTop = window.pageYOffset + e.parentData.top;\n if ((targetOffsetTop - e.editTop) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) - e.popHeight - 5;\n }\n else if (((e.editTop + e.editHeight) - (targetOffsetTop + target.offsetHeight)) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) + target.offsetHeight + 5;\n }\n else {\n y = e.y;\n }\n target = isAligned ? e.target : target;\n if (target.offsetWidth > e.popWidth) {\n x = (target.offsetWidth / 2) - (e.popWidth / 2) + e.parentData.left + target.offsetLeft;\n }\n else {\n x = e.parentData.left + target.offsetLeft;\n }\n this.popupObj.position.X = ((x + e.popWidth) > e.parentData.right) ? e.parentData.right - e.popWidth : x;\n this.popupObj.position.Y = (y >= 0) ? y : e.y + 5;\n this.popupObj.dataBind();\n removeClass([this.toolbarElement], [classes.CLS_RM_WHITE_SPACE]);\n };\n BaseQuickToolbar.prototype.checkCollision = function (e, viewPort, type) {\n var x;\n var y;\n var parentTop = e.parentData.top;\n var contentTop = e.windowY + parentTop + e.tBarElementHeight;\n var collision = [];\n if (viewPort === 'document') {\n collision = isCollide(e.popup);\n }\n else {\n collision = isCollide(e.popup, e.parentElement);\n }\n for (var i = 0; i < collision.length; i++) {\n switch (collision[i]) {\n case 'top':\n if (viewPort === 'document') {\n y = e.windowY;\n }\n else {\n y = (window.pageYOffset + parentTop) + e.tBarElementHeight;\n }\n break;\n case 'bottom': {\n var posY = void 0;\n if (viewPort === 'document') {\n if (type === 'inline') {\n posY = (e.y - e.popHeight - 10);\n }\n else {\n if ((e.windowHeight - (parentTop + e.tBarElementHeight)) > e.popHeight) {\n if ((contentTop - e.windowHeight) > e.popHeight) {\n posY = (contentTop + (e.windowHeight - parentTop)) - e.popHeight;\n }\n else {\n posY = contentTop;\n }\n }\n else {\n posY = e.windowY + (parentTop + e.tBarElementHeight);\n }\n }\n }\n else {\n if (e.target.tagName !== 'IMG') {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 10;\n }\n else {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 5;\n }\n }\n y = posY;\n break;\n }\n case 'right':\n if (type === 'inline') {\n x = window.pageXOffset + (e.windowWidth - (e.popWidth + e.bodyRightSpace + 10));\n }\n else {\n x = e.x - e.popWidth;\n }\n break;\n case 'left':\n if (type === 'inline') {\n x = 0;\n }\n else {\n x = e.parentData.left;\n }\n break;\n }\n }\n this.popupObj.position.X = (x) ? x : this.popupObj.position.X;\n this.popupObj.position.Y = (y) ? y : this.popupObj.position.Y;\n this.popupObj.dataBind();\n };\n /**\n * showPopup method\n *\n * @param {number} x - specifies the x value\n * @param {number} y - specifies the y value\n * @param {Element} target - specifies the element\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.showPopup = function (x, y, target) {\n var _this = this;\n var eventArgs = { popup: this.popupObj, cancel: false, targetElement: target };\n this.parent.trigger(events.beforeQuickToolbarOpen, eventArgs, function (beforeQuickToolbarArgs) {\n if (!beforeQuickToolbarArgs.cancel) {\n var editPanelTop = void 0;\n var editPanelHeight = void 0;\n var bodyStyle = window.getComputedStyle(document.body);\n var bodyRight = parseFloat(bodyStyle.marginRight.split('px')[0]) + parseFloat(bodyStyle.paddingRight.split('px')[0]);\n var windowHeight = window.innerHeight;\n var windowWidth = window.innerWidth;\n var parent_1 = _this.parent.element;\n var toolbarAvail = !isNullOrUndefined(_this.parent.getToolbar());\n var tbHeight = toolbarAvail && _this.parent.toolbarModule.getToolbarHeight();\n var expTBHeight = toolbarAvail && _this.parent.toolbarModule.getExpandTBarPopHeight();\n var tBarHeight = (toolbarAvail) ? (tbHeight + expTBHeight) : 0;\n addClass([_this.element], [classes.CLS_HIDE]);\n if (Browser.isDevice && !isIDevice()) {\n addClass([_this.parent.getToolbar()], [classes.CLS_HIDE]);\n }\n if (_this.parent.iframeSettings.enable) {\n var cntEle = _this.contentRenderer.getPanel().contentWindow;\n editPanelTop = cntEle.pageYOffset;\n editPanelHeight = cntEle.innerHeight;\n }\n else {\n var cntEle = closest(target, '.' + classes.CLS_RTE_CONTENT);\n editPanelTop = (cntEle) ? cntEle.scrollTop : 0;\n editPanelHeight = (cntEle) ? cntEle.offsetHeight : 0;\n }\n if (!_this.parent.inlineMode.enable && !closest(target, 'table')) {\n _this.parent.disableToolbarItem(_this.parent.toolbarSettings.items);\n _this.parent.enableToolbarItem(['Undo', 'Redo']);\n }\n append([_this.element], document.body);\n if (_this.parent.showTooltip) {\n _this.tooltip = new Tooltip({\n target: '#' + _this.element.id + ' [title]',\n showTipPointer: true\n });\n _this.tooltip.appendTo(_this.element);\n }\n _this.popupObj.position.X = x + 20;\n _this.popupObj.position.Y = y + 20;\n _this.popupObj.dataBind();\n _this.popupObj.element.classList.add('e-popup-open');\n _this.dropDownButtons.renderDropDowns({\n container: _this.toolbarElement,\n containerType: 'quick',\n items: _this.stringItems\n });\n _this.colorPickerObj.renderColorPickerInput({\n container: _this.toolbarElement,\n containerType: 'quick',\n items: _this.stringItems\n });\n var showPopupData = {\n x: x, y: y,\n target: target,\n editTop: editPanelTop,\n editHeight: editPanelHeight,\n popup: _this.popupObj.element,\n popHeight: _this.popupObj.element.offsetHeight,\n popWidth: _this.popupObj.element.offsetWidth,\n parentElement: parent_1,\n bodyRightSpace: bodyRight,\n windowY: window.pageYOffset,\n windowHeight: windowHeight,\n windowWidth: windowWidth,\n parentData: parent_1.getBoundingClientRect(),\n tBarElementHeight: tBarHeight\n };\n if (target.tagName === 'IMG' || target.tagName === 'AUDIO' || target.tagName === 'VIDEO' || target.tagName === 'IFRAME' || (target.classList &&\n (target.classList.contains(classes.CLS_AUDIOWRAP) || target.classList.contains(classes.CLS_CLICKELEM) ||\n target.classList.contains(classes.CLS_VID_CLICK_ELEM)))) {\n _this.setPosition(showPopupData);\n }\n if (!_this.parent.inlineMode.enable) {\n _this.checkCollision(showPopupData, 'parent', '');\n }\n _this.checkCollision(showPopupData, 'document', ((_this.parent.inlineMode.enable) ? 'inline' : ''));\n _this.popupObj.element.classList.remove('e-popup-open');\n removeClass([_this.element], [classes.CLS_HIDE]);\n _this.popupObj.show({ name: 'ZoomIn', duration: (Browser.isIE ? 250 : 400) });\n if (_this.popupObj && _this.parent.cssClass) {\n removeClass([_this.popupObj.element], _this.parent.cssClass);\n addClass([_this.popupObj.element], _this.parent.cssClass);\n }\n setStyleAttribute(_this.element, {\n maxWidth: window.outerWidth + 'px'\n });\n addClass([_this.element], [classes.CLS_POP]);\n _this.isDOMElement = true;\n }\n });\n };\n /**\n * hidePopup method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.hidePopup = function () {\n var viewSourcePanel = this.parent.sourceCodeModule.getViewPanel();\n if (Browser.isDevice && !isIDevice()) {\n removeClass([this.parent.getToolbar()], [classes.CLS_HIDE]);\n }\n if (!isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {\n if (!isNullOrUndefined(document.querySelector('#' + this.element.id + ' [data-tooltip-id]'))) {\n var tooltipTargetEle = document.querySelector('#' + this.element.id + ' [data-tooltip-id]');\n var dataContent = tooltipTargetEle.getAttribute('data-content');\n tooltipTargetEle.removeAttribute('data-content');\n tooltipTargetEle.setAttribute('title', dataContent);\n tooltipTargetEle.removeAttribute('data-tooltip-id');\n }\n this.tooltip.destroy();\n }\n if (!isNullOrUndefined(this.parent.getToolbar()) && !this.parent.inlineMode.enable) {\n if (isNullOrUndefined(viewSourcePanel) || viewSourcePanel.style.display === 'none') {\n this.parent.enableToolbarItem(this.parent.toolbarSettings.items);\n }\n }\n this.removeEleFromDOM();\n this.isDOMElement = false;\n };\n /**\n * @param {string} item - specifies the string value\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.addQTBarItem = function (item, index) {\n this.quickTBarObj.toolbarObj.addItems(this.quickTBarObj.getItems(item, 'toolbar'), index);\n };\n /**\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.removeQTBarItem = function (index) {\n this.quickTBarObj.toolbarObj.removeItems(index);\n };\n BaseQuickToolbar.prototype.removeEleFromDOM = function () {\n var element = this.popupObj.element;\n if (this.isDOMElement) {\n this.dropDownButtons.destroyDropDowns();\n this.colorPickerObj.destroyColorPicker();\n removeClass([this.element], [classes.CLS_POP]);\n detach(element);\n var args = this.popupObj;\n this.parent.trigger(events.quickToolbarClose, args);\n }\n };\n BaseQuickToolbar.prototype.updateStatus = function (args) {\n var options = {\n args: args,\n dropDownModule: this.dropDownButtons,\n parent: this.parent,\n tbElements: selectAll('.' + classes.CLS_TB_ITEM, this.element),\n tbItems: this.quickTBarObj.toolbarObj.items\n };\n setToolbarStatus(options, true, this.parent);\n if (!select('.e-rte-srctextarea', this.parent.element)) {\n updateUndoRedoStatus(this.parent.getBaseToolbarObject(), this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * Destroys the Quick toolbar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.destroy = function () {\n if (this.popupObj && !this.popupObj.isDestroyed) {\n this.popupObj.destroy();\n this.removeEleFromDOM();\n }\n this.removeEventListener();\n };\n /**\n * addEventListener method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n if (this.parent.inlineMode.enable) {\n this.parent.on(events.toolbarUpdated, this.updateStatus, this);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the model element\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n if (e.newProp.inlineMode.enable) {\n this.parent.on(events.toolbarUpdated, this.updateStatus, this);\n }\n else {\n this.parent.off(events.toolbarUpdated, this.updateStatus);\n }\n break;\n }\n }\n }\n };\n /**\n * removeEventListener method\n *\n * @returns {void}\n * @hidden\n\n */\n BaseQuickToolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n if (this.parent.inlineMode.enable) {\n this.parent.off(events.toolbarUpdated, this.updateStatus);\n }\n };\n return BaseQuickToolbar;\n}());\nexport { BaseQuickToolbar };\n","import { Popup } from '@syncfusion/ej2-popups';\nimport { CLS_QUICK_POP } from '../base/classes';\nimport * as events from '../base/constant';\n/**\n * `Popup renderer` module is used to render popup in RichTextEditor.\n *\n * @hidden\n\n */\nvar PopupRenderer = /** @class */ (function () {\n /**\n * Constructor for popup renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent.\n */\n function PopupRenderer(parent) {\n this.parent = parent;\n }\n PopupRenderer.prototype.quickToolbarOpen = function () {\n var args = this.popupObj;\n this.parent.trigger(events.quickToolbarOpen, args);\n };\n /**\n * renderPopup method\n *\n * @param {BaseQuickToolbar} args - specifies the arguments.\n * @returns {void}\n * @hidden\n\n */\n PopupRenderer.prototype.renderPopup = function (args) {\n this.setPanel(args.element);\n this.renderPanel();\n args.popupObj = new Popup(args.element, {\n targetType: 'relative',\n relateTo: this.parent.element,\n open: this.quickToolbarOpen.bind(this)\n });\n this.popupObj = args.popupObj;\n args.popupObj.hide();\n };\n /**\n * The function is used to add popup class in Quick Toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n PopupRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_QUICK_POP);\n };\n /**\n * Get the popup element of RichTextEditor\n *\n * @returns {Element} - specifies the element\n * @hidden\n\n */\n PopupRenderer.prototype.getPanel = function () {\n return this.popupPanel;\n };\n /**\n * Set the popup element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element\n * @hidden\n\n */\n PopupRenderer.prototype.setPanel = function (panel) {\n this.popupPanel = panel;\n };\n return PopupRenderer;\n}());\nexport { PopupRenderer };\n","import { select, isNullOrUndefined, Browser, addClass, removeClass, EventHandler, closest, isNullOrUndefined as isNOU } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\nimport * as events from '../base/constant';\nimport { pageYOffset, hasClass, isIDevice } from '../base/util';\nimport { BaseQuickToolbar } from './base-quick-toolbar';\nimport { PopupRenderer } from '../renderer/popup-renderer';\nimport { CLS_INLINE_POP, CLS_INLINE } from '../base/classes';\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar QuickToolbar = /** @class */ (function () {\n function QuickToolbar(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.renderFactory.addRenderer(RenderType.Popup, new PopupRenderer(this.parent));\n this.addEventListener();\n }\n QuickToolbar.prototype.formatItems = function (items) {\n var formattedItems = [];\n items.forEach(function (item) {\n if (typeof item === 'string') {\n switch (item.toLocaleLowerCase()) {\n case 'open':\n formattedItems.push('openLink');\n break;\n case 'edit':\n formattedItems.push('editLink');\n break;\n case 'unlink':\n formattedItems.push('removeLink');\n break;\n default:\n formattedItems.push(item);\n break;\n }\n }\n else {\n formattedItems.push(item);\n }\n });\n return formattedItems;\n };\n QuickToolbar.prototype.getQTBarOptions = function (popType, mode, items, type) {\n return {\n popupType: popType,\n toolbarItems: items,\n mode: mode,\n renderType: type,\n cssClass: this.parent.cssClass\n };\n };\n /**\n * createQTBar method\n *\n * @param {string} popupType - specifies the string value\n * @param {string} mode - specifies the string value.\n * @param {string} items - specifies the string.\n * @param {RenderType} type - specifies the render type.\n * @returns {BaseQuickToolbar} - specifies the quick toolbar\n * @hidden\n\n */\n QuickToolbar.prototype.createQTBar = function (popupType, mode, items, type) {\n if (items.length < 1) {\n return null;\n }\n var qTBar = new BaseQuickToolbar(this.parent, this.locator);\n qTBar.render(this.getQTBarOptions(popupType, mode, this.formatItems(items), type));\n return qTBar;\n };\n QuickToolbar.prototype.initializeQuickToolbars = function () {\n this.parent.quickToolbarModule = this;\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n if (this.parent.inlineMode.enable && this.parent.inlineMode.onSelection && isIDevice()) {\n EventHandler.add(this.contentRenderer.getDocument(), 'selectionchange', this.selectionChangeHandler, this);\n }\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.onMouseDown = function (e) {\n this.parent.isBlur = false;\n this.parent.isRTE = true;\n };\n QuickToolbar.prototype.keyUpQT = function (e) {\n if (e.which === 27) {\n this.hideQuickToolbars();\n }\n };\n QuickToolbar.prototype.renderQuickToolbars = function () {\n if (this.linkQTBar || this.imageQTBar || this.audioQTBar || this.videoQTBar || this.textQTBar || this.tableQTBar) {\n return;\n }\n this.linkQTBar = this.createQTBar('Link', 'Scrollable', this.parent.quickToolbarSettings.link, RenderType.LinkToolbar);\n this.renderFactory.addRenderer(RenderType.LinkToolbar, this.linkQTBar);\n this.textQTBar = this.createQTBar('Text', 'Scrollable', this.parent.quickToolbarSettings.text, RenderType.TextToolbar);\n this.renderFactory.addRenderer(RenderType.TextToolbar, this.textQTBar);\n this.imageQTBar = this.createQTBar('Image', 'MultiRow', this.parent.quickToolbarSettings.image, RenderType.ImageToolbar);\n this.renderFactory.addRenderer(RenderType.ImageToolbar, this.imageQTBar);\n this.audioQTBar = this.createQTBar('Audio', 'MultiRow', this.parent.quickToolbarSettings.audio, RenderType.AudioToolbar);\n this.renderFactory.addRenderer(RenderType.AudioToolbar, this.audioQTBar);\n this.videoQTBar = this.createQTBar('Video', 'MultiRow', this.parent.quickToolbarSettings.video, RenderType.VideoToolbar);\n this.renderFactory.addRenderer(RenderType.VideoToolbar, this.videoQTBar);\n this.tableQTBar = this.createQTBar('Table', 'MultiRow', this.parent.quickToolbarSettings.table, RenderType.TableToolbar);\n this.renderFactory.addRenderer(RenderType.TableToolbar, this.tableQTBar);\n if (this.linkQTBar) {\n EventHandler.add(this.linkQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.linkQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.imageQTBar) {\n EventHandler.add(this.imageQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.imageQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.audioQTBar) {\n EventHandler.add(this.audioQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.audioQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.videoQTBar) {\n EventHandler.add(this.videoQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.videoQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.textQTBar) {\n EventHandler.add(this.textQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.textQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.tableQTBar) {\n EventHandler.add(this.tableQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.tableQTBar.element, 'keyup', this.keyUpQT, this);\n }\n };\n QuickToolbar.prototype.renderInlineQuickToolbar = function () {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.inlineQTBar = this.createQTBar('Inline', 'MultiRow', this.parent.toolbarSettings.items, RenderType.InlineToolbar);\n this.renderFactory.addRenderer(RenderType.InlineToolbar, this.inlineQTBar);\n EventHandler.add(this.inlineQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.inlineQTBar.element, 'keyup', this.keyUpQT, this);\n }\n };\n /**\n * Method for showing the inline quick toolbar\n *\n * @param {number} x -specifies the value of x.\n * @param {number} y - specifies the y valu.\n * @param {HTMLElement} target - specifies the target element.\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.showInlineQTBar = function (x, y, target) {\n if (this.parent.readonly || target.tagName.toLowerCase() === 'img') {\n return;\n }\n this.inlineQTBar.showPopup(x, y, target);\n };\n /**\n * Method for hidding the inline quick toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.hideInlineQTBar = function () {\n if (this.inlineQTBar && !hasClass(this.inlineQTBar.element, 'e-popup-close')) {\n this.inlineQTBar.hidePopup();\n }\n };\n /**\n * Method for hidding the quick toolbar\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.hideQuickToolbars = function () {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close') && document.body.contains(this.linkQTBar.element)) {\n this.linkQTBar.hidePopup();\n }\n if (this.textQTBar && !hasClass(this.textQTBar.element, 'e-popup-close') && document.body.contains(this.textQTBar.element)) {\n this.textQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close') && document.body.contains(this.imageQTBar.element)) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close') && document.body.contains(this.audioQTBar.element)) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close') && document.body.contains(this.videoQTBar.element)) {\n this.videoQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close') && document.body.contains(this.tableQTBar.element)) {\n this.tableQTBar.hidePopup();\n }\n if (!isNOU(this.parent) && this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.deBounce = function (x, y, target) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.showInlineQTBar(x, y, target);\n }, 1000);\n };\n QuickToolbar.prototype.mouseUpHandler = function (e) {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n var args = e.args.touches ?\n e.args.changedTouches[0] : e.args;\n var range = this.parent.getRange();\n var target = e.args.target;\n if (isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n if (isIDevice() && e.touchData && e.touchData.prevClientX !== e.touchData.clientX\n && e.touchData.prevClientY !== e.touchData.clientY) {\n return;\n }\n this.hideInlineQTBar();\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n this.offsetX = this.parent.iframeSettings.enable ? window.pageXOffset + parentLeft + args.clientX : args.pageX;\n this.offsetY = pageYOffset(args, this.parent.element, this.parent.iframeSettings.enable);\n if (target.nodeName === 'TEXTAREA') {\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n else {\n var closestAnchor = closest(target, 'a');\n target = closestAnchor ? closestAnchor : target;\n var startNode = this.parent.getRange().startContainer.parentElement;\n var endNode = this.parent.getRange().endContainer.parentElement;\n if ((isNOU(closest(startNode, 'A')) || isNOU(closest(endNode, 'A'))) && (!closest(target, 'td,th') || !range.collapsed) &&\n (target.tagName !== 'IMG' || this.parent.getRange().startOffset !== this.parent.getRange().endOffset)) {\n if (this.parent.inlineMode.onSelection && range.collapsed) {\n return;\n }\n this.target = target;\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n }\n }\n }\n };\n QuickToolbar.prototype.keyDownHandler = function () {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.inlineQTBarMouseDownHandler = function () {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.keyUpHandler = function (e) {\n if (this.parent.inlineMode.enable && !Browser.isDevice) {\n var args = e.args;\n if (this.parent.inlineMode.onSelection) {\n if (this.parent.getSelection().length > 0) {\n if ((args.ctrlKey && args.keyCode === 65) || (args.shiftKey && (args.keyCode === 33 || args.keyCode === 34 ||\n args.keyCode === 35 || args.keyCode === 36 || args.keyCode === 37 || args.keyCode === 38 ||\n args.keyCode === 39 || args.keyCode === 40))) {\n this.showInlineQTBar(this.offsetX, this.offsetY, args.target);\n }\n }\n return;\n }\n this.deBounce(this.offsetX, this.offsetY, args.target);\n }\n };\n QuickToolbar.prototype.selectionChangeHandler = function (e) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.onSelectionChange(e);\n }, 1000);\n };\n QuickToolbar.prototype.onSelectionChange = function (e) {\n if (!isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n return;\n }\n var selection = this.contentRenderer.getDocument().getSelection();\n if (!selection.isCollapsed) {\n this.mouseUpHandler({ args: e });\n }\n };\n /**\n * getInlineBaseToolbar method\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.getInlineBaseToolbar = function () {\n return this.inlineQTBar && this.inlineQTBar.quickTBarObj;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.destroy = function () {\n if (this.linkQTBar) {\n EventHandler.remove(this.linkQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.linkQTBar.element, 'keyup', this.keyUpQT);\n this.linkQTBar.destroy();\n }\n if (this.textQTBar) {\n EventHandler.remove(this.textQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.textQTBar.element, 'keyup', this.keyUpQT);\n this.textQTBar.destroy();\n }\n if (this.imageQTBar) {\n EventHandler.remove(this.imageQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.imageQTBar.element, 'keyup', this.keyUpQT);\n this.imageQTBar.destroy();\n }\n if (this.audioQTBar) {\n EventHandler.remove(this.audioQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.audioQTBar.element, 'keyup', this.keyUpQT);\n this.audioQTBar.destroy();\n }\n if (this.videoQTBar) {\n EventHandler.remove(this.videoQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.videoQTBar.element, 'keyup', this.keyUpQT);\n this.videoQTBar.destroy();\n }\n if (this.tableQTBar) {\n EventHandler.remove(this.tableQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.tableQTBar.element, 'keyup', this.keyUpQT);\n this.tableQTBar.destroy();\n }\n if (this.inlineQTBar) {\n EventHandler.remove(this.inlineQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.inlineQTBar.element, 'keyup', this.keyUpQT);\n if (isIDevice()) {\n EventHandler.remove(document, 'selectionchange', this.selectionChangeHandler);\n }\n this.inlineQTBar.destroy();\n }\n this.removeEventListener();\n };\n QuickToolbar.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n QuickToolbar.prototype.wireInlineQTBarEvents = function () {\n this.parent.on(events.mouseUp, this.mouseUpHandler, this);\n this.parent.on(events.mouseDown, this.inlineQTBarMouseDownHandler, this);\n this.parent.on(events.keyDown, this.keyDownHandler, this);\n this.parent.on(events.keyUp, this.keyUpHandler, this);\n this.parent.on(events.sourceCodeMouseDown, this.mouseUpHandler, this);\n this.parent.on(events.renderInlineToolbar, this.renderInlineQuickToolbar, this);\n this.parent.on(events.moduleDestroy, this.moduleDestroy, this);\n };\n QuickToolbar.prototype.unWireInlineQTBarEvents = function () {\n this.parent.off(events.mouseUp, this.mouseUpHandler);\n this.parent.off(events.mouseDown, this.inlineQTBarMouseDownHandler);\n this.parent.off(events.keyDown, this.keyDownHandler);\n this.parent.off(events.keyUp, this.keyUpHandler);\n this.parent.off(events.sourceCodeMouseDown, this.mouseUpHandler);\n this.parent.off(events.renderInlineToolbar, this.renderInlineQuickToolbar);\n this.parent.off(events.moduleDestroy, this.moduleDestroy);\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.toolbarUpdated = function (args) {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close')) {\n this.linkQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close')) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close')) {\n this.videoQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close')) {\n this.tableQTBar.hidePopup();\n }\n };\n /**\n * addEventListener\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialEnd, this.initializeQuickToolbars, this);\n this.parent.on(events.mouseDown, this.renderQuickToolbars, this);\n this.parent.on(events.toolbarUpdated, this.toolbarUpdated, this);\n this.parent.on(events.drop, this.renderQuickToolbars, this);\n this.wireInlineQTBarEvents();\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.on(events.scroll, this.hideQuickToolbars, this);\n this.parent.on(events.contentscroll, this.hideQuickToolbars, this);\n }\n this.parent.on(events.focusChange, this.hideQuickToolbars, this);\n this.parent.on(events.iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.keyDown, this.onKeyDown, this);\n this.parent.on(events.rtlMode, this.setRtl, this);\n this.parent.on(events.bindCssClass, this.setCssClass, this);\n };\n QuickToolbar.prototype.onKeyDown = function (e) {\n var args = e.args;\n if (args.which === 8 || args.which === 46) {\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close')) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close')) {\n this.videoQTBar.hidePopup();\n }\n }\n };\n QuickToolbar.prototype.onIframeMouseDown = function () {\n this.hideQuickToolbars();\n this.hideInlineQTBar();\n };\n QuickToolbar.prototype.updateCss = function (baseQTObj, e) {\n if (baseQTObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass && baseQTObj.quickTBarObj.toolbarObj.cssClass !== e.cssClass)) {\n baseQTObj.quickTBarObj.toolbarObj.setProperties({ cssClass: (baseQTObj.quickTBarObj.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n baseQTObj.quickTBarObj.toolbarObj.setProperties({ cssClass: (baseQTObj.quickTBarObj.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n QuickToolbar.prototype.setCssClass = function (e) {\n var baseQuickToolbarObj = [\n this.inlineQTBar, this.imageQTBar, this.linkQTBar, this.textQTBar, this.tableQTBar\n ];\n for (var i = 0; i < baseQuickToolbarObj.length; i++) {\n this.updateCss(baseQuickToolbarObj[i], e);\n }\n };\n QuickToolbar.prototype.setRtl = function (args) {\n if (this.inlineQTBar) {\n this.inlineQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageQTBar) {\n this.imageQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.audioQTBar) {\n this.audioQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.videoQTBar) {\n this.videoQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.linkQTBar) {\n this.linkQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n };\n /**\n * removeEventListener\n *\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.initializeQuickToolbars);\n this.parent.off(events.mouseDown, this.renderQuickToolbars);\n this.parent.off(events.toolbarUpdated, this.toolbarUpdated);\n this.parent.off(events.drop, this.renderQuickToolbars);\n this.unWireInlineQTBarEvents();\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.off(events.scroll, this.hideQuickToolbars);\n this.parent.off(events.contentscroll, this.hideQuickToolbars);\n }\n this.parent.off(events.focusChange, this.hideQuickToolbars);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(events.keyDown, this.onKeyDown);\n this.parent.off(events.rtlMode, this.setRtl);\n this.parent.off(events.bindCssClass, this.setCssClass);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the element.\n * @returns {void}\n * @hidden\n\n */\n QuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.quickToolbarSettings)) {\n for (var _i = 0, _a = Object.keys(e.newProp.quickToolbarSettings); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'actionOnScroll':\n if (e.newProp.quickToolbarSettings.actionOnScroll === 'none') {\n this.parent.off(events.scroll, this.hideQuickToolbars);\n this.parent.off(events.contentscroll, this.hideQuickToolbars);\n }\n else {\n this.parent.on(events.scroll, this.hideQuickToolbars, this);\n this.parent.on(events.contentscroll, this.hideQuickToolbars, this);\n }\n break;\n }\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.inlineQTBar) {\n removeClass([this.parent.element], [CLS_INLINE]);\n this.unWireInlineQTBarEvents();\n this.hideInlineQTBar();\n }\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.wireInlineQTBarEvents();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n QuickToolbar.prototype.getModuleName = function () {\n return 'quickToolbar';\n };\n return QuickToolbar;\n}());\nexport { QuickToolbar };\n","import styles from \"./add-article.module.css\";\r\nimport {\r\n\tfontFamily,\r\n\tfontColor,\r\n\tquickToolbarSettings,\r\n\ttoolbarSettings,\r\n\tfontSize,\r\n\tinsertImageSettings,\r\n\thandleImageUploadSuccess,\r\n\timageUploadingHandler\r\n} from \"../../../lib/rich-text-settings\";\r\nimport { useState, useRef } from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faSave, faPaperPlane } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { NavLink, useNavigate } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport axios from \"axios\";\r\n\r\nimport {\r\n\tHtmlEditor,\r\n\tImage,\r\n\tInject,\r\n\tLink,\r\n\tQuickToolbar,\r\n\tRichTextEditorComponent,\r\n\tToolbar,\r\n} from \"@syncfusion/ej2-react-richtexteditor\";\r\nimport * as React from \"react\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-base/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-base/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-icons/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-buttons/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-inputs/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-lists/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-navigations/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-popups/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-richtexteditor/styles/material.css\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\nfunction AddArticle() {\r\n\tconst [editorValue, setEditorValue] = useState(\"\");\r\n\tconst navigate = useNavigate();\r\n\tconst handleEditorChange = args => {\r\n\t\tsetEditorValue(args.value);\r\n\t};\r\n\tconst inputRef = useRef();\r\n\tconst [editForm, setEditForm] = useState({\r\n\t\ttitle: formBuilder.configInput(\"input\", \"text\", \"Title\", null, { required: true }, \"\"),\r\n\t\tauthor: formBuilder.configInput(\"input\", \"text\", \"Author\", null, { required: true }, \"\"),\r\n\t\tprimaryPhoto: formBuilder.configInput(\"input\", \"file\", \"Display Image\", null, {}, \"\", {\r\n\t\t\tformat: [\"image/jpeg\", \"image/png\", \"image/jpg\"],\r\n\t\t\tref: inputRef,\r\n\t\t}),\r\n\t});\r\n\tconst [error, setError] = useState(false);\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\tconst [message, setMessage] = useState(\"saving\");\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\t\tconst action = evt.target.closest(\"button\").id;\r\n\t\tconst publish = action === \"save\" ? false : true;\r\n\t\tconst urlSlug = editForm.title.value.replaceAll(\" \", \"-\").toLowerCase();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in editForm) {\r\n\t\t\tformBuilder.checkValidity(editForm[elt]);\r\n\t\t\tif (!editForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst currentDate = new Date();\r\n\t\tconst postedOn = publish ? currentDate.toISOString() : \"\";\r\n\r\n\t\tconst data = {\r\n\t\t\ttitle: editForm.title.value,\r\n\t\t\tbody: editorValue,\r\n\t\t\turlSlug: urlSlug,\r\n\t\t\tpublished: publish,\r\n\t\t\tauthor: editForm.author.value,\r\n\t\t\tprimaryPhoto: editForm.primaryPhoto.options.ref.current.files[0],\r\n\t\t\tpostedOn,\r\n\t\t};\r\n\r\n\t\tconst message = publish ? \"Article Published\" : \"Article Saved\";\r\n\r\n\t\tconst options = {\r\n\t\t\theaders: { \"content-type\": \"multipart/form-data\" },\r\n\t\t};\r\n\r\n\t\tsetIsLoading(true);\r\n\t\tif (publish) {\r\n\t\t\tsetMessage(\"publish\");\r\n\t\t} else {\r\n\t\t\tsetMessage(\"saving\");\r\n\t\t}\r\n\t\taxios\r\n\t\t\t.post(`/BlogPost`, data, options)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 201) {\r\n\t\t\t\t\ttoast.success(message);\r\n\t\t\t\t\tif (action === \"submit\") {\r\n\t\t\t\t\t\tnavigate(\"/admin/articles\");\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnavigate(`/admin/articles/edit/${resp.data.postId}`);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(resp.message);\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...editForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetEditForm(updatedForm);\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(editForm, handleInputChange);\r\n\r\n\tconst articleForm = !isLoading ? (\r\n\t\t\r\n\t\t\t{form}\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
    \r\n\t\t\t\tCancel\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\r\n\t) : (\r\n\t\t\r\n\t);\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t

    Add an Article

    \r\n\t\t\t{articleForm}\r\n\t\t
    \r\n\t);\r\n}\r\nexport default AddArticle;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"loadRing\":\"BusySpinner_loadRing__8axSm\"};","import React from \"react\";\r\n\r\nimport styles from \"./BusySpinner.module.css\";\r\n\r\nconst LoadingIndicator = () => (\r\n\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t\t
    \r\n\t
    \r\n);\r\n\r\nexport default LoadingIndicator;\r\n","import styles from \"./add-article.module.css\";\r\nimport { useState, useEffect } from \"react\";\r\nimport {\r\n\tfontFamily,\r\n\tfontColor,\r\n\tquickToolbarSettings,\r\n\ttoolbarSettings,\r\n\tfontSize,\r\n\thandleImageUploadSuccess,\r\n\tinsertImageSettings,\r\n\timageUploadingHandler,\r\n} from \"../../../lib/rich-text-settings\";\r\nimport { useNavigate, useParams, NavLink } from \"react-router-dom\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport axios from \"axios\";\r\nimport { faSave, faPaperPlane } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { toast } from \"react-toastify\";\r\nimport {\r\n\tHtmlEditor,\r\n\tImage,\r\n\tInject,\r\n\tLink,\r\n\tQuickToolbar,\r\n\tRichTextEditorComponent,\r\n\tToolbar,\r\n} from \"@syncfusion/ej2-react-richtexteditor\";\r\nimport * as React from \"react\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-base/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-base/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-icons/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-buttons/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-inputs/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-lists/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-navigations/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-popups/styles/material.css\";\r\nimport \"../../../../node_modules/@syncfusion/ej2-richtexteditor/styles/material.css\";\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport ServerError from \"../../../components/serverError\";\r\nimport LoadingIndicator from \"../../../components/UI/BusySpinner\";\r\n\r\nfunction EditArticle() {\r\n\tconst [editorValue, setEditorValue] = useState(\"\");\r\n\tconst [article, setArticle] = useState(null);\r\n\tconst { id } = useParams();\r\n\tconst navigate = useNavigate();\r\n\tconst [editForm, setEditForm] = useState({\r\n\t\ttitle: formBuilder.configInput(\"input\", \"text\", \"Title\", null, { required: true }, \"\"),\r\n\t\tauthor: formBuilder.configInput(\"input\", \"text\", \"Author\", null, { required: true }, \"\"),\r\n\t\tprimaryPhoto: formBuilder.configInput(\"input\", \"file\", \"Choose a new display image for article\", null, {}, \"\", {\r\n\t\t\tformat: \"image/*\",\r\n\t\t}),\r\n\t});\r\n\tconst [error, setError] = useState(false);\r\n\tconst [isLoading, setIsLoading] = useState(true);\r\n\tconst [serverError, setServerError] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\taxios\r\n\t\t\t.get(`/BlogPost/${id}`)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tsetArticle(resp.data);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\tsetServerError(true);\r\n\t\t\t});\r\n\t}, [id]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (article) {\r\n\t\t\tsetEditorValue(article.body);\r\n\t\t\tsetEditForm({\r\n\t\t\t\ttitle: formBuilder.configInput(\"input\", \"text\", \"Title\", null, { required: true }, article.title),\r\n\t\t\t\tauthor: formBuilder.configInput(\"input\", \"text\", \"Author\", null, { required: true }, article.author),\r\n\t\t\t\tprimaryPhoto: formBuilder.configInput(\r\n\t\t\t\t\t\"input\",\r\n\t\t\t\t\t\"file\",\r\n\t\t\t\t\t\"Choose a new display image for article\",\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t{},\r\n\t\t\t\t\t\"\",\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tformat: \"image/*\",\r\n\t\t\t\t\t}\r\n\t\t\t\t),\r\n\t\t\t});\r\n\t\t}\r\n\t}, [article]);\r\n\r\n\tconst handleEditorChange = args => {\r\n\t\tsetEditorValue(args.value);\r\n\t};\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...editForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetEditForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in editForm) {\r\n\t\t\tformBuilder.checkValidity(editForm[elt]);\r\n\t\t\tif (!editForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst action = evt.target.closest(\"button\").id;\r\n\t\tconst publish = action === \"save\" ? false : true;\r\n\t\tconst urlSlug = editForm.title.value.replaceAll(\" \", \"-\").toLowerCase();\r\n\t\tconst currentDate = new Date();\r\n\t\tlet postedOn;\r\n\t\tif (!article.postedOn && publish) {\r\n\t\t\tpostedOn = currentDate.toISOString();\r\n\t\t} else {\r\n\t\t\tpostedOn = article.postedOn;\r\n\t\t}\r\n\r\n\t\tconst data = {\r\n\t\t\tauthor: editForm.author.value,\r\n\t\t\ttitle: editForm.title.value,\r\n\t\t\turlSlug: urlSlug,\r\n\t\t\tbody: editorValue,\r\n\t\t\tpublished: publish,\r\n\t\t\tprimaryPhoto: editForm.primaryPhoto.value,\r\n\t\t\tpostedOn,\r\n\t\t};\r\n\r\n\t\tconst message = publish ? \"Content Published\" : \"Content Saved\";\r\n\t\tconst options = {\r\n\t\t\theaders: { \"content-type\": \"multipart/form-data\" },\r\n\t\t};\r\n\r\n\t\tsetIsLoading(true);\r\n\r\n\t\taxios\r\n\t\t\t.put(`/BlogPost/${id}`, data, options)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\ttoast.success(message);\r\n\t\t\t\t\tif (action === \"submit\") navigate(\"/admin/articles\");\r\n\t\t\t\t\tsetError(false);\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(resp.message);\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(editForm, handleInputChange);\r\n\r\n\tlet serverMessages;\r\n\tif (isLoading) serverMessages = ;\r\n\tif (serverError) serverMessages = ;\r\n\r\n\tconst thumbnailImage =\r\n\t\tarticle && editForm.primaryPhoto.value === \"\" ? (\r\n\t\t\t
    \r\n\t\t\t\t

    Current display image:

    \r\n\t\t\t\t{`Display\r\n\t\t\t
    \r\n\t\t) : null;\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t

    Edit Article

    \r\n\t\t\t{serverMessages}\r\n\t\t\t
    \r\n\t\t\t\t{form}\r\n\t\t\t\t{thumbnailImage}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\tCancel\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n}\r\nexport default EditArticle;\r\n","import styles from \"../articles/articlesDashboard.module.css\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n\tfaCirclePlus,\r\n\tfaMagnifyingGlass,\r\n\tfaEdit,\r\n\tfaTrashCan,\r\n\tfaArrowUpAZ,\r\n\tfaArrowDownZA,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport axios from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\nimport Backdrop from \"../../../components/Modal/backdrop\";\r\nimport DeleteModal from \"../../../components/adminComponents/delete-modal\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\nconst tableHeadings = [\r\n\t{ topic: \"Name\", id: \"name\", class: \"\" },\r\n\t{ topic: \"Address\", id: \"street\", class: \"\" },\r\n\t{ topic: \"City\", id: \"city\", class: styles.mobileHide },\r\n\t{ topic: \"State\", id: \"stateProvinceAbbreviation\", class: \"\" },\r\n\t{ topic: \"Postal Code\", id: \"postalCode\", class: styles.desktopHide },\r\n\t{ topic: \"Phone Number\", id: \"phone\", class: styles.desktopHide },\r\n];\r\n\r\nexport default function LocationsDashboard() {\r\n\tconst [locations, setLocations] = useState([]);\r\n\tconst [displayLocations, setDisplayLocations] = useState([]);\r\n\tconst [searchTerm, setSearchTerm] = useState(\"\");\r\n\tconst inputRef = useRef(null);\r\n\tconst [filterTopic, setFilterTopic] = useState(\"state\");\r\n\tconst [selectedTopic, setSelectedTopic] = useState(\"state\");\r\n\tconst [isLoading, setIsLoading] = useState(true);\r\n\tconst [displayModal, setDisplayModal] = useState(false);\r\n\tconst [deleteItem, setDeleteItem] = useState(null);\r\n\r\n\tuseEffect(() => {\r\n\t\taxios\r\n\t\t\t.get(\"/Location\")\r\n\t\t\t.then(resp => {\r\n\t\t\t\tsetLocations(resp.data);\r\n\r\n\t\t\t\tconst sortName = resp.data.sort((a, b) => a.name.localeCompare(b.name));\r\n\t\t\t\tconst sortState = sortName.sort((a, b) =>\r\n\t\t\t\t\ta.stateProvinceAbbreviation.localeCompare(b.stateProvinceAbbreviation)\r\n\t\t\t\t);\r\n\t\t\t\tsetDisplayLocations(sortState);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst timerId = setTimeout(() => {\r\n\t\t\tif (inputRef.current.value === searchTerm) {\r\n\t\t\t\tconst display = locations.filter(\r\n\t\t\t\t\tlocation =>\r\n\t\t\t\t\t\tsearchTerm === \"\" ||\r\n\t\t\t\t\t\tlocation.name.toLowerCase().includes(searchTerm) ||\r\n\t\t\t\t\t\tlocation.city.toLowerCase().includes(searchTerm) ||\r\n\t\t\t\t\t\tlocation.street.toLowerCase().includes(searchTerm)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tsetDisplayLocations(display);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\r\n\t\treturn () => clearTimeout(timerId);\r\n\t}, [searchTerm, locations]);\r\n\r\n\tconst handleInputChange = evt => {\r\n\t\tsetSearchTerm(evt.target.value.toLowerCase());\r\n\t};\r\n\r\n\tconst handleFilterTopicChange = evt => {\r\n\t\tconst topic = evt.target.closest(\"th\").id;\r\n\t\tlet isAscending = false;\r\n\r\n\t\tif (topic === filterTopic) {\r\n\t\t\tisAscending = !selectedTopic;\r\n\t\t}\r\n\r\n\t\tlet sortName = [...displayLocations];\r\n\r\n\t\tif (topic !== \"name\") {\r\n\t\t\tsortName = [...displayLocations].sort((a, b) => a.name.localeCompare(b.name));\r\n\t\t}\r\n\r\n\t\tconst topicsSort = sortName.sort((a, b) => {\r\n\t\t\tif (a[topic] < b[topic]) return isAscending ? -1 : 1;\r\n\t\t\tif (a[topic] > b[topic]) return isAscending ? 1 : -1;\r\n\t\t\treturn 0;\r\n\t\t});\r\n\t\tsetDisplayLocations(topicsSort);\r\n\t\tif (topic === filterTopic && selectedTopic === topic) {\r\n\t\t\tsetSelectedTopic(isAscending ? topic : \"\");\r\n\t\t} else {\r\n\t\t\tsetFilterTopic(topic);\r\n\t\t\tsetSelectedTopic(isAscending ? topic : \"\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleDelete = id => {\r\n\t\taxios\r\n\t\t\t.delete(`/Location/${id}`)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\tconst newLocationList = locations.filter(locations => locations.locationId !== id);\r\n\t\t\t\t\tsetDisplayLocations(newLocationList);\r\n\t\t\t\t\tsetDisplayModal(false);\r\n\t\t\t\t\ttoast.success(`The location \"${resp.data.name}\" was deleted.`);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst handleHideModalDisplay = () => {\r\n\t\tsetDisplayModal(false);\r\n\t};\r\n\r\n\tconst handleShowModal = (name, id) => {\r\n\t\tsetDisplayModal(true);\r\n\t\tsetDeleteItem({ title: name, id });\r\n\t};\r\n\r\n\tconst locationsTable = displayLocations.sort((a, b) => a.name > b.name ? 1 : -1).map(location => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{location.name}\r\n\t\t\t\t{location.street}\r\n\t\t\t\t{location.city}\r\n\t\t\t\t{location.stateProvinceAbbreviation}\r\n\t\t\t\t{location.postalCode}\r\n\t\t\t\t{location.phone}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t handleShowModal(location.name, location.locationId)}\r\n\t\t\t\t\t\taria-label=\"Delete Location\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t});\r\n\r\n\tconst theadings = tableHeadings.map(heading => {\r\n\t\tlet icon;\r\n\t\tif (heading.id === filterTopic) {\r\n\t\t\ticon =\r\n\t\t\t\tselectedTopic === heading.id ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{heading.topic} {icon}\r\n\t\t\t\r\n\t\t);\r\n\t});\r\n\r\n\tlet tableResults;\r\n\r\n\tif (isLoading) {\r\n\t\ttableResults = ;\r\n\t} else if (displayLocations.length === 0 && searchTerm !== \"\") {\r\n\t\ttableResults =

    Sorry, no results found. Please revise your search

    ;\r\n\t} else if (locations.length === 0 && !searchTerm) {\r\n\t\ttableResults =

    No locations found. Add a location

    ;\r\n\t} else {\r\n\t\ttableResults = (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{theadings}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{locationsTable}\r\n\t\t\t
    Options
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{displayModal && }\r\n\t\t\t{displayModal && }\r\n\t\t\t

    Locations

    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t Add a Location\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t{tableResults}\r\n\t\t\r\n\t);\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"locationForm\":\"add-location_locationForm__0pGzv\",\"btnContainer\":\"add-location_btnContainer__R+Qxc\"};","// extracted by mini-css-extract-plugin\nexport default {\"stateModal\":\"add-state_stateModal__eybWD\",\"buttonContainer\":\"add-state_buttonContainer__6U2Rv\"};","import { useState } from \"react\";\r\nimport formBuilder from \"../Forms/formBuilder\";\r\nimport axios from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\nimport styles from \"./add-state.module.css\";\r\n\r\nexport default function AddState(props) {\r\n\tconst [stateForm, setStateForm] = useState({\r\n\t\tname: formBuilder.configInput(\"input\", \"text\", \"Name\", null, { required: true }),\r\n\t\tabbreviation: formBuilder.configInput(\"input\", \"text\", \"Abbreviation\", null, { reqLength: 2 }),\r\n\t});\r\n\tconst [error, setError] = useState(false);\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...stateForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetStateForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in stateForm) {\r\n\t\t\tformBuilder.checkValidity(stateForm[elt]);\r\n\t\t\tif (!stateForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst data = {\r\n\t\t\tname: stateForm.name.value,\r\n\t\t\tabbreviation: stateForm.abbreviation.value,\r\n\t\t};\r\n\r\n\t\taxios\r\n\t\t\t.post(\"StateProvince\", data)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 201) {\r\n\t\t\t\t\ttoast.success(\"State Added\");\r\n\t\t\t\t\tprops.success(resp.data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(\"There was an error with your request\");\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => toast.error(err));\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(stateForm, handleInputChange);\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t

    Add a state

    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t{form}\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport axios from \"axios\";\r\nimport styles from \"./add-location.module.css\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport AddState from \"../../../components/adminComponents/add-state\";\r\nimport Backdrop from \"../../../components/Modal/backdrop\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\nexport default function AddLocation() {\r\n\tconst [locationForm, setLocationForm] = useState({\r\n\t\tname: formBuilder.configInput(\"input\", \"text\", \"Name\", null, { required: true, minLength: 2 }),\r\n\t\tstreet: formBuilder.configInput(\"input\", \"text\", \"Street\", null, { required: true }),\r\n\t\tsuite: formBuilder.configInput(\"input\", \"text\", \"Suite\", null, {}),\r\n\t\tcity: formBuilder.configInput(\"input\", \"text\", \"City\", null, {}, \"\"),\r\n\t\tstateProvinceAbbreviation: formBuilder.configInput(\r\n\t\t\t\"select\",\r\n\t\t\t\"\",\r\n\t\t\t\"State\",\r\n\t\t\tnull,\r\n\t\t\t{\r\n\t\t\t\trequired: true,\r\n\t\t\t},\r\n\t\t\t\"\",\r\n\t\t\t{ states: [] }\r\n\t\t),\r\n\t\tpostalCode: formBuilder.configInput(\"input\", \"text\", \"Postal Code\", null, { reqLength: 5 }, \"\"),\r\n\t\tphone: formBuilder.configInput(\"input\", \"text\", \"Phone Number\", null, { required: true }, \"\"),\r\n\t\tfax: formBuilder.configInput(\"input\", \"text\", \"Fax\", null, {}, \"\"),\r\n\t});\r\n\tconst navigate = useNavigate();\r\n\tconst [states, setStates] = useState([]);\r\n\tconst [error, setError] = useState(false);\r\n\tconst [displayStateModal, setDisplayStateModal] = useState(false);\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tsetIsLoading(true);\r\n\t\taxios\r\n\t\t\t.get(\"/StateProvince\")\r\n\t\t\t.then(resp => {\r\n\t\t\t\tconst states = resp.data;\r\n\t\t\t\tconst sortedStates = states.sort((a, b) => a.abbreviation.localeCompare(b.abbreviation));\r\n\t\t\t\tsetStates(sortedStates);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (states.length > 0) {\r\n\t\t\tsetLocationForm({\r\n\t\t\t\tname: formBuilder.configInput(\"input\", \"text\", \"Name\", null, { required: true }, \"\"),\r\n\t\t\t\tstreet: formBuilder.configInput(\"input\", \"text\", \"Street\", null, { required: true }, \"\"),\r\n\t\t\t\tsuite: formBuilder.configInput(\"input\", \"text\", \"Suite\", null, {}, \"\"),\r\n\t\t\t\tcity: formBuilder.configInput(\"input\", \"text\", \"City\", null, {}, \"\"),\r\n\t\t\t\tstateProvinceAbbreviation: formBuilder.configInput(\r\n\t\t\t\t\t\"select\",\r\n\t\t\t\t\t\"\",\r\n\t\t\t\t\t\"State\",\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"\",\r\n\t\t\t\t\t{ states, handleAddStateModal }\r\n\t\t\t\t),\r\n\t\t\t\tpostalCode: formBuilder.configInput(\"input\", \"text\", \"Postal Code\", null, { reqLength: 5 }, \"\"),\r\n\t\t\t\tphone: formBuilder.configInput(\"input\", \"text\", \"Phone Number\", null, { required: true }, \"\"),\r\n\t\t\t\tfax: formBuilder.configInput(\"input\", \"text\", \"Fax\", null, {}, \"\"),\r\n\t\t\t});\r\n\t\t}\r\n\t}, [states]);\r\n\r\n\tconst handleAddStateModal = evt => {\r\n\t\tevt.preventDefault();\r\n\t\tsetDisplayStateModal(true);\r\n\t};\r\n\r\n\tconst handleCloseStateModal = evt => {\r\n\t\tevt.preventDefault();\r\n\t\tsetDisplayStateModal(false);\r\n\t};\r\n\r\n\tconst successfulAddedState = data => {\r\n\t\tconst addStates = [...states];\r\n\t\taddStates.push(data);\r\n\t\tconst sortedStates = addStates.sort((a, b) => a.abbreviation.localeCompare(b.abbreviation));\r\n\t\tsetStates(sortedStates);\r\n\t\tsetDisplayStateModal(false);\r\n\t};\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...locationForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetLocationForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in locationForm) {\r\n\t\t\tformBuilder.checkValidity(locationForm[elt]);\r\n\t\t\tif (!locationForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetIsLoading(true);\r\n\r\n\t\tconst data = {\r\n\t\t\tname: locationForm.name.value,\r\n\t\t\tstreet: locationForm.street.value,\r\n\t\t\tsuite: locationForm.suite.value,\r\n\t\t\tcity: locationForm.city.value,\r\n\t\t\tpostalCode: locationForm.postalCode.value,\r\n\t\t\tphone: locationForm.phone.value,\r\n\t\t\tfax: locationForm.fax.value,\r\n\t\t\tstateProvinceAbbreviation: locationForm.stateProvinceAbbreviation.value,\r\n\t\t};\r\n\r\n\t\tconst findState = states.find(state => state.abbreviation === data.stateProvinceAbbreviation);\r\n\r\n\t\tdata.stateProvinceId = findState.stateProvinceId;\r\n\t\tdata.stateProvinceName = findState.name;\r\n\r\n\t\taxios\r\n\t\t\t.post(\"/Location\", data)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 201) {\r\n\t\t\t\t\ttoast.success(`${data.name} was added`);\r\n\t\t\t\t\tnavigate(\"/admin/locations\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(\"There was an error with your request\");\r\n\t\t\t\t}\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(locationForm, handleInputChange);\r\n\r\n\tconst displayLocationsForm = !isLoading ? (\r\n\t\t
    \r\n\t\t\t{form}\r\n\t\t\t
    \r\n\t\t\t\tCancel\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t) : (\r\n\t\t\r\n\t);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{displayStateModal && }\r\n\t\t\t

    Add Location

    \r\n\t\t\t{displayLocationsForm}\r\n\t\t\t{displayStateModal && }\r\n\t\t\r\n\t);\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport axios from \"axios\";\r\nimport styles from \"./add-location.module.css\";\r\nimport { Link, useNavigate, useParams } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport AddState from \"../../../components/adminComponents/add-state\";\r\nimport Backdrop from \"../../../components/Modal/backdrop\";\r\nimport ServerError from \"../../../components/serverError\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\nexport default function EditLocation() {\r\n\tconst [locationForm, setLocationForm] = useState({\r\n\t\tname: formBuilder.configInput(\"input\", \"text\", \"Name\", null, { required: true, minLength: 2 }),\r\n\t\tstreet: formBuilder.configInput(\"input\", \"text\", \"Street\", null, { required: true }),\r\n\t\tsuite: formBuilder.configInput(\"input\", \"text\", \"Suite\", null, {}),\r\n\t\tcity: formBuilder.configInput(\"input\", \"text\", \"City\", null, {}, \"\"),\r\n\t\tstateProvinceAbbreviation: formBuilder.configInput(\r\n\t\t\t\"select\",\r\n\t\t\t\"\",\r\n\t\t\t\"State\",\r\n\t\t\tnull,\r\n\t\t\t{\r\n\t\t\t\trequired: true,\r\n\t\t\t},\r\n\t\t\t\"\",\r\n\t\t\t{ states: [] }\r\n\t\t),\r\n\t\tpostalCode: formBuilder.configInput(\"input\", \"text\", \"Postal Code\", null, { reqLength: 5 }, \"\"),\r\n\t\tphone: formBuilder.configInput(\"input\", \"text\", \"Phone Number\", null, { required: true }, \"\"),\r\n\t\tfax: formBuilder.configInput(\"input\", \"text\", \"Fax\", null, {}, \"\"),\r\n\t});\r\n\tconst navigate = useNavigate();\r\n\tconst { id } = useParams();\r\n\tconst [states, setStates] = useState([]);\r\n\tconst [error, setError] = useState(false);\r\n\tconst [displayStateModal, setDisplayStateModal] = useState(false);\r\n\tconst [location, setLocation] = useState(null);\r\n\tconst [isLoading, setIsLoading] = useState(true);\r\n\tconst [errorLoading, setErrorLoading] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\taxios\r\n\t\t\t.get(\"/StateProvince\")\r\n\t\t\t.then(resp => {\r\n\t\t\t\tconst states = resp.data;\r\n\t\t\t\tconst sortedStates = states.sort((a, b) => a.abbreviation.localeCompare(b.abbreviation));\r\n\t\t\t\tsetStates(sortedStates);\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\tsetErrorLoading(true);\r\n\t\t\t});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\taxios\r\n\t\t\t.get(`/Location/${id}`)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tsetLocation(resp.data);\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\tsetErrorLoading(true);\r\n\t\t\t});\r\n\t}, [id]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (states.length > 0 && location) {\r\n\t\t\tsetIsLoading(false);\r\n\t\t\tsetLocationForm({\r\n\t\t\t\tname: formBuilder.configInput(\"input\", \"text\", \"Name\", null, { required: true }, location.name),\r\n\t\t\t\tstreet: formBuilder.configInput(\"input\", \"text\", \"Street\", null, { required: true }, location.street),\r\n\t\t\t\tsuite: formBuilder.configInput(\"input\", \"text\", \"Suite\", null, {}, location.suite),\r\n\t\t\t\tcity: formBuilder.configInput(\"input\", \"text\", \"City\", null, {}, location.city),\r\n\t\t\t\tstateProvinceAbbreviation: formBuilder.configInput(\r\n\t\t\t\t\t\"select\",\r\n\t\t\t\t\t\"\",\r\n\t\t\t\t\t\"State\",\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tlocation.stateProvinceAbbreviation,\r\n\t\t\t\t\t{ states, handleAddStateModal }\r\n\t\t\t\t),\r\n\t\t\t\tpostalCode: formBuilder.configInput(\r\n\t\t\t\t\t\"input\",\r\n\t\t\t\t\t\"text\",\r\n\t\t\t\t\t\"Postal Code\",\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t{ reqLength: 5 },\r\n\t\t\t\t\tlocation.postalCode\r\n\t\t\t\t),\r\n\t\t\t\tphone: formBuilder.configInput(\r\n\t\t\t\t\t\"input\",\r\n\t\t\t\t\t\"text\",\r\n\t\t\t\t\t\"Phone Number\",\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t{ required: true },\r\n\t\t\t\t\tlocation.phone\r\n\t\t\t\t),\r\n\t\t\t\tfax: formBuilder.configInput(\"input\", \"text\", \"Fax\", null, {}, location.fax),\r\n\t\t\t});\r\n\t\t}\r\n\t}, [states, location]);\r\n\r\n\tconst handleAddStateModal = evt => {\r\n\t\tevt.preventDefault();\r\n\t\tsetDisplayStateModal(true);\r\n\t};\r\n\r\n\tconst handleCloseStateModal = evt => {\r\n\t\tevt.preventDefault();\r\n\t\tsetDisplayStateModal(false);\r\n\t};\r\n\r\n\tconst successfulAddedState = data => {\r\n\t\tconst addStates = [...states];\r\n\t\taddStates.push(data);\r\n\t\tconst sortedStates = addStates.sort((a, b) => a.abbreviation.localeCompare(b.abbreviation));\r\n\t\tsetStates(sortedStates);\r\n\t\tsetDisplayStateModal(false);\r\n\t};\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...locationForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetLocationForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in locationForm) {\r\n\t\t\tformBuilder.checkValidity(locationForm[elt]);\r\n\t\t\tif (!locationForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetIsLoading(true);\r\n\r\n\t\tconst data = {\r\n\t\t\tname: locationForm.name.value,\r\n\t\t\tstreet: locationForm.street.value,\r\n\t\t\tsuite: locationForm.suite.value,\r\n\t\t\tcity: locationForm.city.value,\r\n\t\t\tpostalCode: locationForm.postalCode.value,\r\n\t\t\tphone: locationForm.phone.value,\r\n\t\t\tfax: locationForm.fax.value,\r\n\t\t\tstateProvinceAbbreviation: locationForm.stateProvinceAbbreviation.value,\r\n\t\t\tstateProvinceId: location.stateProvinceId,\r\n\t\t\tstateProvinceName: location.stateProvinceName,\r\n\t\t};\r\n\r\n\t\taxios\r\n\t\t\t.put(`Location/${id}`, data)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\ttoast.success(\"Location Updated\");\r\n\t\t\t\t\tnavigate(\"/admin/locations\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(\"There was an error with your request\");\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(locationForm, handleInputChange);\r\n\r\n\tlet displayLocationsForm;\r\n\r\n\tif (isLoading) {\r\n\t\tdisplayLocationsForm = ;\r\n\t} else if (errorLoading) {\r\n\t\tdisplayLocationsForm = ;\r\n\t} else {\r\n\t\tdisplayLocationsForm = (\r\n\t\t\t
    \r\n\t\t\t\t{form}\r\n\t\t\t\t
    \r\n\t\t\t\t\tCancel\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{displayStateModal && }\r\n\t\t\t

    Edit Location

    \r\n\t\t\t{displayLocationsForm}\r\n\t\t\t{displayStateModal && }\r\n\t\t\r\n\t);\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"accountContainer\":\"login-form_accountContainer__eoGzx\",\"loginForm\":\"login-form_loginForm__uKFyL\",\"logInImage\":\"login-form_logInImage__6SELO\",\"logButtonContainer\":\"login-form_logButtonContainer__IWjrW\",\"plain\":\"login-form_plain__iWQls\"};","import React from 'react';\r\n\r\nconst AuthContext = React.createContext({\r\n\tauthInfo: {},\r\n\tsetAuthInfo: () => {},\r\n\tclearAuthInfo: () => {},\r\n\tisLoggedIn: () => {}\r\n});\r\n\r\nexport default AuthContext;\r\n","import { useState, useContext, useRef } from \"react\";\r\nimport formBuilder from \"../Forms/formBuilder\";\r\nimport axios from \"axios\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport styles from \"./login-form.module.css\";\r\nimport LoadingIcon from \"../loading\";\r\nimport { setAuth } from \"../../services/authService\";\r\nimport AuthContext from \"../../context/auth-context\";\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\n\r\nexport default function LoginForm(props) {\r\n\tconst [accountForm, setAccountForm] = useState({\r\n\t\tusername: formBuilder.configInput(\"input\", \"text\", \"Username\", null, { required: true }),\r\n\t\tpassword: formBuilder.configInput(\"input\", \"password\", \"Password\", null, { required: true }),\r\n\t});\r\n\tconst [error, setError] = useState(false);\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\tconst authContext = useContext(AuthContext);\r\n\tconst captchaRef = useRef(null);\r\n\r\n\tconst SITE_KEY = process.env.REACT_APP_RECAPTCHA_SITE_KEY;\r\n\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...accountForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetAccountForm(updatedForm);\r\n\t};\r\n\t\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in accountForm) {\r\n\t\t\tformBuilder.checkValidity(accountForm[elt]);\r\n\t\t\tif (!accountForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet token = captchaRef.current.getValue();\r\n\t\t// captchaRef.current.reset();\r\n\r\n\t\tif (token) {\r\n\t\t\tconst data = {\r\n\t\t\t\tusername: accountForm.username.value,\r\n\t\t\t\tpassword: accountForm.password.value,\r\n\t\t\t\tcaptchaToken: token,\r\n\t\t\t};\r\n\t\r\n\t\t\tsetIsLoading(true);\r\n\t\t\taxios\r\n\t\t\t\t.post(\"/user/bearertoken\", data)\r\n\t\t\t\t.then(resp => {\r\n\t\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\t\tsetAuth(resp.data.token, resp.data.expiration);\r\n\t\t\t\t\t\tauthContext.setAuthInfo({\r\n\t\t\t\t\t\t\ttoken: resp.data.token,\r\n\t\t\t\t\t\t\texpiration: resp.data.expiration\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttoast.error(\"Invalid credentials.\");\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(err => {\r\n\t\t\t\t\ttoast.error(err.message);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\ttoast.error('You must fill out the captcha.')\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(accountForm, handleInputChange);\r\n\r\n\tconst loginFormDisplay = !isLoading ? (\r\n\t\t
    \r\n\t\t\t{form}\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tCancel\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\tforgot password?\r\n\t\t\t
    \r\n\t\t
    \r\n\t) : (\r\n\t\t\r\n\t);\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t

    Log In

    \r\n\t\t\t{loginFormDisplay}\r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"accountContainer\":\"logout-form_accountContainer__rxgVM\",\"logButtonContainer\":\"logout-form_logButtonContainer__B20JX\"};","import { useContext } from \"react\";\r\nimport { clearAuth } from \"../../services/authService\"\r\nimport styles from './logout-form.module.css'\r\nimport AuthContext from \"../../context/auth-context\";\r\n\r\nexport default function LogoutForm(props) {\r\n\r\n\tconst authContext = useContext(AuthContext);\r\n\r\n\tconst handleLogout = () => {\r\n\t\tclearAuth();\r\n\t\tauthContext.clearAuthInfo();\r\n\t};\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t

    Log Out

    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n}","import { useContext } from \"react\";\r\nimport LoginForm from \"../../../components/account/login-form\";\r\nimport LogoutForm from \"../../../components/account/logout-form\";\r\nimport AuthContext from \"../../../context/auth-context\";\r\n\r\nexport default function Account() {\r\n\r\n\tconst authContext = useContext(AuthContext);\r\n\r\n\tlet content = \r\n\r\n\tif (authContext.isLoggedIn()) {\r\n\t\tcontent = \r\n\t}\r\n\r\n\treturn content;\r\n\r\n}\r\n","import styles from \"../articles/articlesDashboard.module.css\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n\tfaCirclePlus,\r\n\tfaMagnifyingGlass,\r\n\tfaEdit,\r\n\tfaTrashCan,\r\n\tfaArrowDownZA,\r\n\tfaArrowUpAZ,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport axios from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\nimport Backdrop from \"../../../components/Modal/backdrop\";\r\nimport DeleteModal from \"../../../components/adminComponents/delete-modal\";\r\n\r\nconst tableHeadings = [\r\n\t{ topic: \"First Name\", id: \"firstName\" },\r\n\t{ topic: \"Last Name\", id: \"lastName\" },\r\n\t{ topic: \"Room Id\", id: \"roomUrl\" },\r\n\t{ topic: \"Link\", id: \"link\" },\r\n];\r\n\r\nexport default function ProvidersDashboard() {\r\n\tconst [providers, setProviders] = useState([]);\r\n\tconst [displayProviders, setDisplayProviders] = useState([]);\r\n\tconst [searchTerm, setSearchTerm] = useState(\"\");\r\n\tconst inputRef = useRef(null);\r\n\tconst [loading, setLoading] = useState(true);\r\n\tconst [selectedTopic, setSelectedTopic] = useState(\"lastName\");\r\n\tconst [displayModal, setDisplayModal] = useState(false);\r\n\tconst [deleteItem, setDeleteItem] = useState(null);\r\n\tconst [filterTopic, setFilterTopic] = useState(\"lastName\");\r\n\r\n\tuseEffect(() => {\r\n\t\taxios\r\n\t\t\t.get(\"/Provider\")\r\n\t\t\t.then(resp => {\r\n\t\t\t\tconst sortFirstName = resp.data.sort((a, b) => a.firstName.localeCompare(b.firstName));\r\n\t\t\t\tconst sortLastName = sortFirstName.sort((a, b) => a.lastName.localeCompare(b.lastName));\r\n\r\n\t\t\t\tsetProviders(sortLastName);\r\n\t\t\t\tsetDisplayProviders(sortLastName);\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t\tsetLoading(false);\r\n\t\t\t});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst timerId = setTimeout(() => {\r\n\t\t\tif (inputRef.current.value === searchTerm) {\r\n\t\t\t\tconst displayBlogs = providers.filter(\r\n\t\t\t\t\tprovider =>\r\n\t\t\t\t\t\tsearchTerm === \"\" ||\r\n\t\t\t\t\t\tprovider.firstName.toLowerCase().includes(searchTerm.toLowerCase()) ||\r\n\t\t\t\t\t\tprovider.lastName.toLowerCase().includes(searchTerm) ||\r\n\t\t\t\t\t\tprovider.roomUrl.includes(searchTerm)\r\n\t\t\t\t);\r\n\t\t\t\tsetDisplayProviders(displayBlogs);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\r\n\t\treturn () => clearTimeout(timerId);\r\n\t}, [searchTerm, providers]);\r\n\r\n\tconst handleSort = evt => {\r\n\t\tconst topic = evt.target.closest(\"th\").id;\r\n\t\tlet isAscending = false;\r\n\t\tif (topic === filterTopic) {\r\n\t\t\tisAscending = !selectedTopic;\r\n\t\t}\r\n\r\n\t\tlet sort = [...displayProviders];\r\n\r\n\t\tconst topicsSort = sort.sort((a, b) => {\r\n\t\t\tif (a[topic] < b[topic]) return isAscending ? -1 : 1;\r\n\t\t\tif (a[topic] > b[topic]) return isAscending ? 1 : -1;\r\n\t\t\treturn 0;\r\n\t\t});\r\n\t\tsetDisplayProviders(topicsSort);\r\n\t\tif (topic === filterTopic && selectedTopic === topic) {\r\n\t\t\tsetSelectedTopic(isAscending ? topic : \"\");\r\n\t\t} else {\r\n\t\t\tsetFilterTopic(topic);\r\n\t\t\tsetSelectedTopic(isAscending ? topic : \"\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleDelete = id => {\r\n\t\taxios\r\n\t\t\t.delete(`/Provider/${id}`)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\tconst newLocationList = providers.filter(provider => provider.providerId !== id);\r\n\t\t\t\t\tsetDisplayProviders(newLocationList);\r\n\t\t\t\t\tsetDisplayModal(false);\r\n\t\t\t\t\ttoast.success(`${resp.data.firstName} ${resp.data.lastName} was deleted`);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst handleHideModalDisplay = () => {\r\n\t\tsetDisplayModal(false);\r\n\t};\r\n\r\n\tconst handleShowModal = (name, id) => {\r\n\t\tsetDisplayModal(true);\r\n\t\tsetDeleteItem({ title: name, id });\r\n\t};\r\n\r\n\tconst handleInputChange = evt => {\r\n\t\tsetSearchTerm(evt.target.value.toLowerCase());\r\n\t};\r\n\r\n\tconst providersTable = displayProviders.map(provider => (\r\n\t\t\r\n\t\t\t{provider.firstName}\r\n\t\t\t{provider.lastName}\r\n\t\t\t{provider.roomUrl}\r\n\t\t\t{provider.toLink}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t handleShowModal(`${provider.firstName} ${provider.lastName}`, provider.providerId)}\r\n\t\t\t\t\taria-label=\"Delete Blog Post\">\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t));\r\n\r\n\tconst theadings = tableHeadings.map(heading => {\r\n\t\tlet icon;\r\n\t\tif (heading.id === \"link\") {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{heading.topic}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else if (heading.id === \"roomUrl\") {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{heading.topic}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (heading.id === filterTopic) {\r\n\t\t\ticon =\r\n\t\t\t\tselectedTopic === heading.id ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{heading.topic} {icon}\r\n\t\t\t\r\n\t\t);\r\n\t});\r\n\r\n\tlet tableResults;\r\n\r\n\tif (loading) {\r\n\t\ttableResults = ;\r\n\t} else if (displayProviders.length === 0 && searchTerm !== \"\") {\r\n\t\ttableResults =

    Sorry, no results found. Please revise your search

    ;\r\n\t} else if (providers.length === 0 && !searchTerm) {\r\n\t\ttableResults =

    No providers found. Add a Provider

    ;\r\n\t} else {\r\n\t\ttableResults = (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{theadings}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{providersTable}\r\n\t\t\t
    Options
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{displayModal && }\r\n\t\t\t{displayModal && }\r\n\t\t\t

    Providers

    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t Add a Provider\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t{tableResults}\r\n\t\t\r\n\t);\r\n}\r\n","import { useState } from \"react\";\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport axios from \"axios\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport styles from \"../locations/add-location.module.css\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\nexport default function AddProvider() {\r\n\tconst [providerForm, setProviderForm] = useState({\r\n\t\tfirstName: formBuilder.configInput(\"input\", \"text\", \"First Name\", null, { required: true, minLength: 2 }),\r\n\t\tlastName: formBuilder.configInput(\"input\", \"text\", \"Last Name\", null, { required: true }),\r\n\t\troomUrl: formBuilder.configInput(\"input\", \"text\", \"Room Id\", null, {}),\r\n\t\tlinkTo: formBuilder.configInput(\"input\", \"text\", \"Url\", null, { required: true }, \"\"),\r\n\t});\r\n\tconst navigate = useNavigate();\r\n\tconst [error, setError] = useState(false);\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...providerForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetProviderForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in providerForm) {\r\n\t\t\tformBuilder.checkValidity(providerForm[elt]);\r\n\t\t\tif (!providerForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst data = {\r\n\t\t\tfirstName: providerForm.firstName.value,\r\n\t\t\tlastName: providerForm.lastName.value,\r\n\t\t\troomUrl: providerForm.roomUrl.value,\r\n\t\t\ttoLink: providerForm.linkTo.value,\r\n\t\t};\r\n\t\tsetIsLoading(true);\r\n\t\taxios\r\n\t\t\t.post(\"/Provider\", data)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 201) {\r\n\t\t\t\t\ttoast.success(`${data.firstName} ${data.lastName} was added`);\r\n\t\t\t\t\tnavigate(\"/admin/providers\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(\"There was an error with your request\");\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(providerForm, handleInputChange);\r\n\r\n\tconst providerFormDisplay = !isLoading ? (\r\n\t\t
    \r\n\t\t\t{form}\r\n\t\t\t
    \r\n\t\t\t\tCancel\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t) : (\r\n\t\t\r\n\t);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t

    Add a Provider

    \r\n\t\t\t{providerFormDisplay}\r\n\t\t\r\n\t);\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport axios from \"axios\";\r\nimport { Link, useNavigate, useParams } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport styles from \"../locations/add-location.module.css\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\nimport ServerError from \"../../../components/serverError\";\r\n\r\nexport default function EditProvider() {\r\n\tconst [providerForm, setProviderForm] = useState({\r\n\t\tfirstName: formBuilder.configInput(\"input\", \"text\", \"First Name\", null, { required: true, minLength: 2 }),\r\n\t\tlastName: formBuilder.configInput(\"input\", \"text\", \"Last Name\", null, { required: true }),\r\n\t\troomUrl: formBuilder.configInput(\"input\", \"text\", \"Room Id\", null, {}),\r\n\t\ttoLink: formBuilder.configInput(\"input\", \"text\", \"Url\", null, { required: true }, \"\"),\r\n\t});\r\n\tconst navigate = useNavigate();\r\n\tconst [error, setError] = useState(false);\r\n\tconst { id } = useParams();\r\n\tconst [provider, setProvider] = useState(null);\r\n\tconst [isLoading, setIsLoading] = useState(true);\r\n\tconst [serverError, setServerError] = useState(false);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (id) {\r\n\t\t\taxios\r\n\t\t\t\t.get(`/Provider/${id}`)\r\n\t\t\t\t.then(resp => {\r\n\t\t\t\t\tsetProvider(resp.data);\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t})\r\n\t\t\t\t.catch(err => {\r\n\t\t\t\t\ttoast.error(\"There was an error loading data\");\r\n\t\t\t\t\tsetServerError(true);\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}, [id]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (provider) {\r\n\t\t\tsetProviderForm({\r\n\t\t\t\tfirstName: formBuilder.configInput(\r\n\t\t\t\t\t\"input\",\r\n\t\t\t\t\t\"text\",\r\n\t\t\t\t\t\"First Name\",\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\trequired: true,\r\n\t\t\t\t\t\tminLength: 2,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tprovider.firstName\r\n\t\t\t\t),\r\n\t\t\t\tlastName: formBuilder.configInput(\r\n\t\t\t\t\t\"input\",\r\n\t\t\t\t\t\"text\",\r\n\t\t\t\t\t\"Last Name\",\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t{ required: true },\r\n\t\t\t\t\tprovider.lastName\r\n\t\t\t\t),\r\n\t\t\t\troomUrl: formBuilder.configInput(\"input\", \"text\", \"Room Id\", null, {}, provider.roomUrl),\r\n\t\t\t\ttoLink: formBuilder.configInput(\"input\", \"text\", \"Url\", null, { required: true }, provider.toLink),\r\n\t\t\t});\r\n\t\t}\r\n\t}, [provider]);\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...providerForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetProviderForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in providerForm) {\r\n\t\t\tformBuilder.checkValidity(providerForm[elt]);\r\n\t\t\tif (!providerForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst data = {\r\n\t\t\tfirstName: providerForm.firstName.value,\r\n\t\t\tlastName: providerForm.lastName.value,\r\n\t\t\troomUrl: providerForm.roomUrl.value,\r\n\t\t\ttoLink: providerForm.toLink.value,\r\n\t\t};\r\n\r\n\t\tsetIsLoading(true);\r\n\t\taxios\r\n\t\t\t.put(`/Provider/${id}`, data)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\ttoast.success(`${data.firstName} ${data.lastName} was updated`);\r\n\t\t\t\t\tnavigate(\"/admin/providers\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(\"There was an error with your request\");\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(providerForm, handleInputChange);\r\n\r\n\tlet providerFormDisplay;\r\n\r\n\tif (isLoading) {\r\n\t\tproviderFormDisplay = ;\r\n\t} else if (serverError) {\r\n\t\tproviderFormDisplay = ;\r\n\t} else {\r\n\t\tproviderFormDisplay = (\r\n\t\t\t
    \r\n\t\t\t\t{form}\r\n\t\t\t\t
    \r\n\t\t\t\t\tCancel\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t

    Add a Provider

    \r\n\t\t\t{providerFormDisplay}\r\n\t\t\r\n\t);\r\n}\r\n","import { useContext } from 'react';\r\nimport LoginForm from '../account/login-form';\r\nimport AuthContext from '../../context/auth-context';\r\n\r\nconst RouteProtector = (props) => {\r\n\r\n\tconst authContext = useContext(AuthContext);\r\n\r\n\tlet content = \r\n\tif (authContext.isLoggedIn()) {\r\n\t\tcontent = props.children;\r\n\t}\r\n\r\n\treturn (<>\r\n\t\t{content}\r\n\t)\r\n\r\n};\r\n\r\nexport default RouteProtector;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"accountContainer\":\"forgot-password_accountContainer__PFceY\",\"loginForm\":\"forgot-password_loginForm__+nx+C\",\"logInImage\":\"forgot-password_logInImage__jMOut\",\"logButtonContainer\":\"forgot-password_logButtonContainer__vkIUF\"};","import { useState } from \"react\";\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport styles from './forgot-password.module.css';\r\nimport axios from \"axios\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\n\r\nexport default function ForgotPassword(props) {\r\n\tconst [resetForm, setResetForm] = useState({\r\n\t\temail: formBuilder.configInput(\"input\", \"email\", \"Email\", null, { required: true }),\r\n\t});\r\n\tconst [error, setError] = useState(false);\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\tconst [emailSent, setEmailSent] = useState(false);\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...resetForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetResetForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in resetForm) {\r\n\t\t\tformBuilder.checkValidity(resetForm[elt]);\r\n\t\t\tif (!resetForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst data = {\r\n\t\t\temail: resetForm.email.value,\r\n\t\t};\r\n\r\n\t\tsetIsLoading(true);\r\n\t\taxios\r\n\t\t\t.post(\"/user/forgot-password\", data)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\tif (resp.data.success) {\r\n\t\t\t\t\t\tsetEmailSent(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (resp.data.message) {\r\n\t\t\t\t\t\ttoast.error(resp.data.message);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttoast.error('A problem occurred. Please try again later.')\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(\"Invalid credentials.\");\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(resetForm, handleInputChange);\r\n\r\n\tlet resetFormDisplay = !isLoading ? (\r\n\t\t
    \r\n\t\t\t{form}\r\n\t\t\t
    \r\n\t\t\t\tCancel\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t) : (\r\n\t\t\r\n\t);\r\n\r\n\tif (emailSent) {\r\n\t\tresetFormDisplay = (\r\n\t\t\t

    If the supplied email matches an account in our system, a password reset email was sent. Please check your email to proceed.

    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t

    Request Password Reset

    \r\n\t\t\t{resetFormDisplay}\r\n\t\t
    \r\n\t);\r\n\r\n\r\n}","// extracted by mini-css-extract-plugin\nexport default {\"accountContainer\":\"reset-password_accountContainer__DLzl7\",\"loginForm\":\"reset-password_loginForm__7fTmY\",\"logInImage\":\"reset-password_logInImage__ToDJV\",\"logButtonContainer\":\"reset-password_logButtonContainer__lTdxn\"};","import { useState, useEffect } from 'react';\r\nimport { useSearchParams } from 'react-router-dom';\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport styles from './reset-password.module.css';\r\nimport axios from \"axios\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\nexport default function ResetPassword(props) {\r\n\tconst [resetForm, setResetForm] = useState({\r\n\t\tnewPassword: formBuilder.configInput(\"input\", \"password\", \"New Password\", null, { required: true }),\r\n\t\tconfirmPassword: formBuilder.configInput(\"input\", \"password\", \"Confirm Password\", null, { required: true, sameAs: 'newPassword' }),\r\n\t});\r\n\tconst [error, setError] = useState(false);\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\tconst [passwordWasReset, setPasswordWasReset] = useState(false);\r\n\tconst [resetData, setResetData] = useState({\r\n\t\temail: '',\r\n\t\ttoken: '',\r\n\t\tvalid: false\r\n\t});\r\n\tconst [searchParams] = useSearchParams();\r\n\r\n\tuseEffect(() => {\r\n\t\tconst email = searchParams.get('email');\r\n\t\tconst token = searchParams.get('token');\r\n\r\n\t\tsetResetData({\r\n\t\t\temail: email,\r\n\t\t\ttoken: token,\r\n\t\t\tvalid: !!(email && token)\r\n\t\t})\r\n\r\n\t}, [searchParams]);\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...resetForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tupdatedElement.value = evt.target.value;\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement, updatedForm);\r\n\t\tsetResetForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in resetForm) {\r\n\t\t\tformBuilder.checkValidity(resetForm[elt], resetForm);\r\n\t\t\tif (!resetForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst data = {\r\n\t\t\tpassword: resetForm.newPassword.value,\r\n\t\t\tconfirmPassword: resetForm.confirmPassword.value,\r\n\t\t\temail: resetData.email,\r\n\t\t\ttoken: resetData.token\r\n\t\t};\r\n\r\n\t\tsetIsLoading(true);\r\n\t\taxios\r\n\t\t\t.post(\"/user/reset-password\", data)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (resp.data.success) {\r\n\t\t\t\t\t\tsetPasswordWasReset(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (resp.data.message) {\r\n\t\t\t\t\t\ttoast.error(resp.data.message);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\ttoast.error('A problem occurred. Please try again later.')\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(\"Password reset request may have expired. Please try sending the request again.\");\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(resetForm, handleInputChange);\r\n\r\n\tlet resetFormDisplay;\r\n\r\n\tif (passwordWasReset) {\r\n\t\tresetFormDisplay = (\r\n\t\t\t

    Your password was reset. Please login to continue.

    \r\n\t\t);\r\n\t}\r\n\telse if (resetData.valid) {\r\n\t\tresetFormDisplay = !isLoading ? (\r\n\t\t\t
    \r\n\t\t\t\t{form}\r\n\t\t\t\t
    \r\n\t\t\t\t\tCancel\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t) : (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\telse {\r\n\t\tresetFormDisplay = (

    It appears that you have reached this page in error. No existing password reset request detected.

    );\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t

    Reset Password

    \r\n\t\t\t{resetFormDisplay}\r\n\t\t
    \r\n\t);\r\n\r\n}\r\n","import styles from \"../articles/articlesDashboard.module.css\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport {\r\n\tfaCirclePlus,\r\n\tfaMagnifyingGlass,\r\n\tfaEdit,\r\n\tfaTrashCan,\r\n\tfaArrowUpAZ,\r\n\tfaArrowDownZA,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useState, useEffect, useRef } from \"react\";\r\nimport axios from \"axios\";\r\nimport { toast } from \"react-toastify\";\r\nimport Backdrop from \"../../../components/Modal/backdrop\";\r\nimport DeleteModal from \"../../../components/adminComponents/delete-modal\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\nconst tableHeadings = [\r\n\t{ topic: \"Name\", id: \"clientName\", class: \"\" },\r\n\t{ topic: 'Active', id: 'active', class: ''},\r\n\t{ topic: \"Testimonial\", id: \"testimonialText\", class: \"\" },\r\n];\r\n\r\nexport default function TestimonialsDashboard() {\r\n\tconst [items, setItems] = useState([]);\r\n\tconst [displayItems, setDisplayItems] = useState([]);\r\n\tconst [searchTerm, setSearchTerm] = useState(\"\");\r\n\tconst inputRef = useRef(null);\r\n\tconst [filterTopic, setFilterTopic] = useState(\"clientName\");\r\n\tconst [selectedTopic, setSelectedTopic] = useState(\"clientName\");\r\n\tconst [isLoading, setIsLoading] = useState(true);\r\n\tconst [displayModal, setDisplayModal] = useState(false);\r\n\tconst [deleteItem, setDeleteItem] = useState(null);\r\n\r\n\tuseEffect(() => {\r\n\t\taxios\r\n\t\t\t.get(\"/testimonial\")\r\n\t\t\t.then(resp => {\r\n\t\t\t\tsetItems(resp.data);\r\n\r\n\t\t\t\tconst sortName = resp.data.sort((a, b) => a.clientName.localeCompare(b.clientName));\r\n\t\t\t\t// const sortTestimonial = sortName.sort((a, b) =>\r\n\t\t\t\t// \ta.testimonialText.localeCompare(b.testimonialText)\r\n\t\t\t\t// );\r\n\t\t\t\tsetDisplayItems(sortName);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t});\r\n\t}, []);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst timerId = setTimeout(() => {\r\n\t\t\tif (inputRef.current.value === searchTerm) {\r\n\t\t\t\tconst display = items.filter(\r\n\t\t\t\t\titem =>\r\n\t\t\t\t\t\tsearchTerm === \"\" ||\r\n\t\t\t\t\t\titem.clientName.toLowerCase().includes(searchTerm) ||\r\n\t\t\t\t\t\titem.testimonialText.toLowerCase().includes(searchTerm)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tsetDisplayItems(display);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\r\n\t\treturn () => clearTimeout(timerId);\r\n\t}, [searchTerm, items]);\r\n\r\n\tconst handleInputChange = evt => {\r\n\t\tsetSearchTerm(evt.target.value.toLowerCase());\r\n\t};\r\n\r\n\tconst handleFilterTopicChange = evt => {\r\n\t\tconst topic = evt.target.closest(\"th\").id;\r\n\t\tlet isAscending = false;\r\n\r\n\t\tif (topic === filterTopic) {\r\n\t\t\tisAscending = !selectedTopic;\r\n\t\t}\r\n\r\n\t\tlet sortName = [...displayItems];\r\n\r\n\t\tif (topic !== \"clientName\") {\r\n\t\t\tsortName = [...displayItems].sort((a, b) => a.clientName.localeCompare(b.clientName));\r\n\t\t}\r\n\r\n\t\tconst topicsSort = sortName.sort((a, b) => {\r\n\t\t\tif (a[topic] < b[topic]) return isAscending ? -1 : 1;\r\n\t\t\tif (a[topic] > b[topic]) return isAscending ? 1 : -1;\r\n\t\t\treturn 0;\r\n\t\t});\r\n\t\tsetDisplayItems(topicsSort);\r\n\t\tif (topic === filterTopic && selectedTopic === topic) {\r\n\t\t\tsetSelectedTopic(isAscending ? topic : \"\");\r\n\t\t} else {\r\n\t\t\tsetFilterTopic(topic);\r\n\t\t\tsetSelectedTopic(isAscending ? topic : \"\");\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleDelete = id => {\r\n\t\taxios\r\n\t\t\t.delete(`/Testimonial/${id}`)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\tconst newItemList = items.filter(item => item.testimonialId !== id);\r\n\t\t\t\t\tsetDisplayItems(newItemList);\r\n\t\t\t\t\tsetDisplayModal(false);\r\n\t\t\t\t\ttoast.success(`The testimonial by \"${resp.data.clientName}\" was deleted.`);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst handleHideModalDisplay = () => {\r\n\t\tsetDisplayModal(false);\r\n\t};\r\n\r\n\tconst handleShowModal = (name, id) => {\r\n\t\tsetDisplayModal(true);\r\n\t\tsetDeleteItem({ title: name, id });\r\n\t};\r\n\r\n\tconst itemsTable = displayItems.sort((a, b) => a.clientName > b.clientName ? 1 : -1).map(item => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{item.clientName}\r\n\t\t\t\t{item.active ? 'Active' : ''}\r\n\t\t\t\t{item.testimonialText.substring(0, 50)}...\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t handleShowModal(item.clientName, item.testimonialId)}\r\n\t\t\t\t\t\taria-label=\"Delete Testimonial\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t});\r\n\r\n\tconst theadings = tableHeadings.map(heading => {\r\n\t\tlet icon;\r\n\t\tif (heading.id === filterTopic) {\r\n\t\t\ticon =\r\n\t\t\t\tselectedTopic === heading.id ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{heading.topic} {icon}\r\n\t\t\t\r\n\t\t);\r\n\t});\r\n\r\n\tlet tableResults;\r\n\r\n\tif (isLoading) {\r\n\t\ttableResults = ;\r\n\t} else if (displayItems.length === 0 && searchTerm !== \"\") {\r\n\t\ttableResults =

    Sorry, no results found. Please revise your search

    ;\r\n\t} else if (items.length === 0 && !searchTerm) {\r\n\t\ttableResults =

    No testimonials found. Add a testimonial.

    ;\r\n\t} else {\r\n\t\ttableResults = (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{theadings}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t{itemsTable}\r\n\t\t\t
    Options
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{displayModal && }\r\n\t\t\t{displayModal && }\r\n\t\t\t

    Testimonials

    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\t Add a Testimonial\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t{tableResults}\r\n\t\t\r\n\t);\r\n}\r\n","// extracted by mini-css-extract-plugin\nexport default {\"itemForm\":\"testimonial_itemForm__B9X75\",\"btnContainer\":\"testimonial_btnContainer__Zw3aa\"};","import { useState } from \"react\";\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport axios from \"axios\";\r\nimport styles from \"./testimonial.module.css\";\r\nimport { Link, useNavigate } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\nexport default function AddTestimonial() {\r\n\tconst [itemForm, setItemForm] = useState({\r\n\t\tclientName: formBuilder.configInput(\"input\", \"text\", \"Name\", null, { required: true, minLength: 2 }),\r\n\t\ttestimonialText: formBuilder.configInput(\"textarea\", null, \"Testimonial\", null, { required: true }),\r\n\t\tactive: formBuilder.configInput('input', 'checkbox', 'Active', null, {}),\r\n\t});\r\n\tconst navigate = useNavigate();\r\n\tconst [error, setError] = useState(false);\r\n\tconst [isLoading, setIsLoading] = useState(false);\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...itemForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tif (updatedElement.attrs.type && updatedElement.attrs.type === 'checkbox') {\r\n\t\t\tupdatedElement.value = evt.target.checked;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tupdatedElement.value = evt.target.value;\r\n\t\t}\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetItemForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in itemForm) {\r\n\t\t\tformBuilder.checkValidity(itemForm[elt]);\r\n\t\t\tif (!itemForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetIsLoading(true);\r\n\r\n\t\tconst data = {\r\n\t\t\tclientName: itemForm.clientName.value,\r\n\t\t\ttestimonialText: itemForm.testimonialText.value,\r\n\t\t\tactive: itemForm.active.value,\r\n\t\t};\r\n\r\n\t\taxios\r\n\t\t\t.post(\"/testimonial\", data)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 201) {\r\n\t\t\t\t\ttoast.success(`Testimonial was added`);\r\n\t\t\t\t\tnavigate(\"/admin/testimonials\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(\"There was an error with your request\");\r\n\t\t\t\t}\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err);\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(itemForm, handleInputChange);\r\n\r\n\tconst formContent = !isLoading ? (\r\n\t\t
    \r\n\t\t\t{form}\r\n\t\t\t
    \r\n\t\t\t\tCancel\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t
    \r\n\t) : (\r\n\t\t\r\n\t);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t

    Add Testimonial

    \r\n\t\t\t{formContent}\r\n\t\t\r\n\t);\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport formBuilder from \"../../../components/Forms/formBuilder\";\r\nimport axios from \"axios\";\r\nimport styles from \"./testimonial.module.css\";\r\nimport { Link, useNavigate, useParams } from \"react-router-dom\";\r\nimport { toast } from \"react-toastify\";\r\nimport ServerError from \"../../../components/serverError\";\r\nimport LoadingIcon from \"../../../components/loading\";\r\n\r\nexport default function EditTestimonial() {\r\n\tconst [itemForm, setItemForm] = useState({\r\n\t\tclientName: formBuilder.configInput(\"input\", \"text\", \"Name\", null, { required: true, minLength: 2 }),\r\n\t\ttestimonialText: formBuilder.configInput(\"textarea\", null, \"Testimonial\", null, { required: true }),\r\n\t\tactive: formBuilder.configInput('input', 'checkbox', 'Active', null, {}),\r\n\t});\r\n\tconst navigate = useNavigate();\r\n\tconst { id } = useParams();\r\n\tconst [error, setError] = useState(false);\r\n\tconst [item, setItem] = useState(null);\r\n\tconst [isLoading, setIsLoading] = useState(true);\r\n\tconst [errorLoading, setErrorLoading] = useState(false);\r\n\r\n\r\n\tuseEffect(() => {\r\n\t\taxios\r\n\t\t\t.get(`/testimonial/${id}`)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tsetItem(resp.data);\r\n\t\t\t\tsetItemForm({\r\n\t\t\t\t\tclientName: formBuilder.configInput(\"input\", \"text\", \"Name\", null, { required: true }, resp.data.clientName),\r\n\t\t\t\t\ttestimonialText: formBuilder.configInput(\"textarea\", null, \"Testimonial\", null, { required: true }, resp.data.testimonialText),\r\n\t\t\t\t\tactive: formBuilder.configInput('input', 'checkbox', 'Active', null, {}, resp.data.active),\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t\tsetErrorLoading(true);\r\n\t\t\t})\r\n\t\t\t.finally(() => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t});\r\n\t}, [id]);\r\n\r\n\tconst handleInputChange = (evt, id) => {\r\n\t\tconst updatedForm = { ...itemForm };\r\n\t\tconst updatedElement = { ...updatedForm[id] };\r\n\t\tif (updatedElement.attrs.type && updatedElement.attrs.type === 'checkbox') {\r\n\t\t\tupdatedElement.value = evt.target.checked;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tupdatedElement.value = evt.target.value;\r\n\t\t}\r\n\t\tupdatedForm[id] = updatedElement;\r\n\t\tformBuilder.checkValidity(updatedElement);\r\n\t\tsetItemForm(updatedForm);\r\n\t};\r\n\r\n\tconst handleFormSubmit = evt => {\r\n\t\tevt.preventDefault();\r\n\r\n\t\tlet hasError = error ? false : false;\r\n\t\tfor (let elt in itemForm) {\r\n\t\t\tformBuilder.checkValidity(itemForm[elt]);\r\n\t\t\tif (!itemForm[elt].valid) {\r\n\t\t\t\thasError = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (hasError) {\r\n\t\t\ttoast.error(\"you must properly fill out the form\");\r\n\t\t\tsetError(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tsetIsLoading(true);\r\n\r\n\t\tconst data = {\r\n\t\t\tclientName: itemForm.clientName.value,\r\n\t\t\ttestimonialText: itemForm.testimonialText.value,\r\n\t\t\tactive: itemForm.active.value,\r\n\t\t};\r\n\r\n\t\taxios\r\n\t\t\t.put(`testimonial/${id}`, data)\r\n\t\t\t.then(resp => {\r\n\t\t\t\tif (resp.status === 200) {\r\n\t\t\t\t\ttoast.success(\"Testimonial Updated\");\r\n\t\t\t\t\tnavigate(\"/admin/testimonials\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoast.error(\"There was an error with your request\");\r\n\t\t\t\t\tsetIsLoading(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tsetIsLoading(false);\r\n\t\t\t\ttoast.error(err.message);\r\n\t\t\t});\r\n\t};\r\n\r\n\tconst form = formBuilder.buildForm(itemForm, handleInputChange);\r\n\r\n\tlet formContent;\r\n\r\n\tif (isLoading) {\r\n\t\tformContent = ;\r\n\t} else if (errorLoading) {\r\n\t\tformContent = ;\r\n\t} else {\r\n\t\tformContent = (\r\n\t\t\t
    \r\n\t\t\t\t{form}\r\n\t\t\t\t
    \r\n\t\t\t\t\tCancel\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t

    Edit Testimonial

    \r\n\t\t\t{formContent}\r\n\t\t\r\n\t);\r\n}\r\n","import { TransitionGroup, CSSTransition } from \"react-transition-group\";\r\nimport { Routes, Route, useLocation } from \"react-router-dom\";\r\nimport styles from \"./ContentContainer.module.css\";\r\nimport \"react-toastify/dist/ReactToastify.css\";\r\nimport { ToastContainer } from \"react-toastify\";\r\nimport Homepage from \"./pages/publicPages/home\";\r\nimport ArticlesPage from \"./pages/publicPages/articles/articles\";\r\nimport IndividualArticle from \"./pages/publicPages/articles/individual-article\";\r\nimport Locations from \"./pages/publicPages/locations/locations\";\r\nimport HowHelp from \"./pages/publicPages/how-help/how-help\";\r\nimport IndividualHelp from \"./pages/publicPages/how-help/individual-help\";\r\nimport Faq from \"./pages/publicPages/faq/faq\";\r\nimport AnewFooter from \"./components/footer\";\r\nimport Contact from \"./pages/publicPages/contact/contact\";\r\nimport TeleHealth from \"./pages/publicPages/telehealth/telehealth\";\r\nimport Careers from \"./pages/publicPages/careers/careers\";\r\nimport NotFound from \"./pages/not-found\";\r\nimport OurTeamPage from \"./pages/publicPages/our-team/ourTeamLoading\";\r\n\r\nimport AdminHome from \"./pages/adminPages/adminHome\";\r\nimport ArticlesDashboard from \"./pages/adminPages/articles/articlesDashboard\";\r\nimport AddArticle from \"./pages/adminPages/articles/add-article\";\r\nimport EditArticle from \"./pages/adminPages/articles/edit-article\";\r\nimport LocationsDashboard from \"./pages/adminPages/locations/locationsDashboard\";\r\nimport AddLocation from \"./pages/adminPages/locations/add-location\";\r\nimport EditLocation from \"./pages/adminPages/locations/edit-location\";\r\nimport Account from \"./pages/adminPages/account/account\";\r\nimport ProvidersDashboard from \"./pages/adminPages/providers/providers-dashboard\";\r\nimport AddProvider from \"./pages/adminPages/providers/add-provider\";\r\nimport EditProvider from \"./pages/adminPages/providers/edit-provider\";\r\nimport RouteProtector from \"./components/auth/route-protector\";\r\nimport ForgotPassword from \"./pages/adminPages/account/forgot-password\";\r\nimport ResetPassword from \"./pages/adminPages/account/reset-password\";\r\nimport TestimonialsDashboard from \"./pages/adminPages/testimonials/testimonialsDashboard\";\r\nimport AddTestimonial from \"./pages/adminPages/testimonials/add-testimonial\";\r\nimport EditTestimonial from \"./pages/adminPages/testimonials/edit-testimonial\";\r\n\r\nfunction ContentContainer() {\r\n\tconst location = useLocation();\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t}>\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t} />\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default ContentContainer;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"navigation-bar\":\"navigation-bar_navigation-bar__PLKeN\",\"navigation-container\":\"navigation-bar_navigation-container__s7hu+\",\"admin\":\"navigation-bar_admin__yUolf\",\"nav-underline\":\"navigation-bar_nav-underline__mKXkf\",\"anew-logo\":\"navigation-bar_anew-logo__gvhYt\",\"toggleButton\":\"navigation-bar_toggleButton__8s6Sb\",\"first\":\"navigation-bar_first__QvNGx\",\"second\":\"navigation-bar_second__1ltA2\",\"trio\":\"navigation-bar_trio__xlCEQ\",\"imgLink\":\"navigation-bar_imgLink__Prv6o\",\"xmark\":\"navigation-bar_xmark__0XgJu\"};","import React, { useState, useContext } from \"react\";\r\nimport styles from \"./navigation-bar.module.css\";\r\nimport { Link, NavLink, useLocation } from \"react-router-dom\";\r\nimport AuthContext from \"../context/auth-context\";\r\n\r\nconst linkTitles = [\r\n\t{ link: \"/\", title: \"Home\" },\r\n\t{ link: \"/how-we-can-help\", title: \"How We Can Help\" },\r\n\t{ link: \"/our-team\", title: \"Our Team\" },\r\n\t{ link: \"/locations\", title: \"Locations\" },\r\n\t{ link: \"/faqs\", title: \"FAQs\" },\r\n\t// { link: \"/articles\", title: \"Articles\" },\r\n\t// { link: \"/careers\", title: \"Join the Team\" },\r\n\t{ link: \"/contact\", title: \"Contact\" },\r\n];\r\n\r\nconst adminLinks = [\r\n\t{ link: \"/admin/dashboard\", title: \"Admin Dashboard\" },\r\n\t{ link: \"/admin/articles\", title: \"Articles\" },\r\n\t{ link: \"/admin/providers\", title: \"Providers\" },\r\n\t{ link: \"/admin/locations\", title: \"Locations\" },\r\n\t{ link: \"/admin/testimonials\", title: \"Testimonials\" },\r\n\t{ link: \"/admin/account\", title: \"Account\" },\r\n\t{ link: \"/\", title: \"Site Home\" },\r\n];\r\nconst minAdminLinks = [\r\n\t{ link: \"/\", title: \"Site Home\" },\r\n];\r\n\r\nexport default function NavigationBar() {\r\n\tconst [toggleMenu, setToggleMenu] = useState(false);\r\n\tconst location = useLocation();\r\n\tconst handleMenuToggle = () => {\r\n\t\tsetToggleMenu(!toggleMenu);\r\n\t};\r\n\tconst authContext = useContext(AuthContext);\r\n\r\n\tconst btnImg = toggleMenu ? styles.xmark : \"\";\r\n\r\n\tlet linkItems;\r\n\r\n\tif (location.pathname.includes(\"/admin\")) {\r\n\t\tif (authContext.isLoggedIn()) {\r\n\t\t\tlinkItems = adminLinks.map(page => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{page.title}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
  • \r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlinkItems = minAdminLinks.map(page => {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{page.title}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
  • \r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t} else {\r\n\t\tlinkItems = linkTitles.map(page => {\r\n\t\t\tif (page.title === \"Home\") {\r\n\t\t\t\treturn (\r\n\t\t\t\t\t
  • \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{page.title}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
  • \r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn (\r\n\t\t\t\t
  • \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{page.title}\r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t\"\"\r\n\t\t
    \r\n\t);\r\n}\r\n","import { useEffect } from \"react\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nconst ScrollToTop = () => {\r\n\tconst { pathname } = useLocation();\r\n\r\n\tuseEffect(() => {\r\n\t\twindow.scrollTo(0, 0);\r\n\t}, [pathname]);\r\n};\r\n\r\nexport default ScrollToTop;\r\n","import React, { useState, useCallback } from \"react\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport ContentContainer from \"./ContentContainer\";\r\nimport NavigationBar from \"./components/navigation-bar\";\r\nimport ScrollToTop from \"./ScrollToTop\";\r\nimport \"./App.css\";\r\nimport AuthContext from \"./context/auth-context\";\r\nimport { defaultAuthValue } from \"./services/authService\";\r\n\r\nfunction App() {\r\n\r\n\tconst [renderKey, setRenderKey] = useState({ key: 0});\r\n\r\n\tconst setAuthInfo = useCallback((token) => {\r\n\t\twindow.localStorage.setItem('authUser', JSON.stringify(token));\r\n\t\tsetRenderKey({ key: Math.random()});\r\n\t}, []);\r\n\r\n\tconst getAuthInfo = useCallback(() => {\r\n\t\tlet value;\r\n\t\tconst test = window.localStorage.getItem('authUser');\r\n\t\tif (test) {\r\n\t\t\ttry {\r\n\t\t\t\tvalue = JSON.parse(test);\r\n\t\t\t}\r\n\t\t\tcatch {\r\n\t\t\t\tvalue = defaultAuthValue;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvalue = defaultAuthValue;\r\n\t\t}\r\n\t\treturn value;\r\n\t}, []);\r\n\r\n\tconst checkLoginNotExpired = useCallback(() => {\r\n\t\tconst authInfo = getAuthInfo();\r\n\t\tif (!authInfo.token) return false;\r\n\r\n\t\tif (!authInfo.expiration || authInfo.expiration < new Date()) return false;\r\n\r\n\t\treturn true;\r\n\t}, [getAuthInfo]);\r\n\r\n\tconst clearAuthInfo = useCallback(() => {\r\n\t\tsetAuthInfo(defaultAuthValue);\r\n\t}, [setAuthInfo]);\r\n\r\n\tconst authInfo = getAuthInfo();\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom/client\";\r\nimport App from \"./App\";\r\nimport reportWebVitals from \"./reportWebVitals\";\r\nimport { registerLicense } from \"@syncfusion/ej2-base\";\r\nimport axios from \"axios\";\r\nimport { getAuth } from \"./services/authService\";\r\n\r\nregisterLicense(`ORg4AjUWIQA/Gnt2VFhiQlJPd11dXmJWd1p/THNYflR1fV9DaUwxOX1dQl9gSH5RfkRhW3ZdcHNXTmM=`);\r\n\r\naxios.defaults.baseURL = `${process.env.REACT_APP_DATABASE_URL}`;\r\naxios.interceptors.request.use(req => {\r\n\tconst auth = getAuth();\r\n\tif (auth && auth.token) {\r\n\t\treq.headers.Authorization = 'Bearer ' + auth.token;\r\n\t}\r\n\treturn req;\r\n})\r\n\r\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\r\nroot.render();\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","LoaderStatus","fastDeepEqual","equal","a","b","constructor","length","i","keys","Array","isArray","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","key","DEFAULT_ID","Loader","_ref","apiKey","authReferrerPolicy","channel","client","_ref$id","id","language","_ref$libraries","libraries","mapIds","nonce","region","_ref$retries","retries","_ref$url","url","version","_classCallCheck","callbacks","loading","errors","this","instance","options","Error","concat","JSON","stringify","_createClass","get","FAILURE","SUCCESS","LOADING","INITIALIZED","join","script","document","getElementById","remove","loadPromise","_this","loadCallback","err","error","window","google","name","execute","maps","importLibrary","fn","push","_this2","callback","params","v","forEach","_b","_a","g","h","k","p","c","l","q","m","d","r","Set","URLSearchParams","console","warn","f","_len","arguments","n","_key","add","_regeneratorRuntime","mark","_callee","wrap","_context","prev","createElement","set","_toConsumableArray","replace","t","toLowerCase","src","onerror","querySelector","head","append","stop","libraryPromises","map","library","all","event","ErrorEvent","loadErrorCallback","deleteScript","onerrorEvent","failed","reset","_this3","delay","Math","pow","setTimeout","setScript","_this4","cb","resetIfRetryingFailed","exports","jsApiLoader","React","_interopDefaultLegacy","Status","React__default","Wrapper","children","render","_objectWithoutProperties","_excluded","_React$useState","useState","_React$useState2","_slicedToArray","status","setStatus","useEffect","loader","setStatusAndExecuteCallback","load","Fragment","defineProperty","factory","require","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","Symbol","for","w","x","y","z","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ca","encodeURIComponent","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","split","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","test","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","assign","Ma","stack","trim","match","Na","Oa","prepareStackTrace","Reflect","construct","includes","Pa","tag","Qa","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","String","fromCharCode","code","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","range","search","tel","text","time","week","me","ne","oe","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","clearTimeout","Hf","Jf","queueMicrotask","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","hh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","uh","vh","index","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","create","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","Ni","WeakMap","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","splice","querySelectorAll","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","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","toArray","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","arr","len","arr2","__esModule","_i","_s","_e","_x","_r","_arr","_n","_d","TypeError","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","propertyIsEnumerable","sourceKeys","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayLikeToArray","o","minLen","from","_arrayLikeToArray","_arrayWithHoles","Constructor","_defineProperties","writable","protoProps","staticProps","_iterableToArray","iter","_nonIterableRest","Op","hasOwn","obj","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","Context","makeInvokeMethod","tryCatch","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","undefined","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","setPrototypeOf","__proto__","awrap","async","val","reverse","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","iterableToArray","_toPropertyKey","hint","prim","toPrimitive","res","Number","_typeof","_unsupportedIterableToArray","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","leafPrototypes","ns","def","definition","chunkId","reduce","promises","miniCssF","prop","inProgress","dataWebpackPrefix","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","timeout","nc","onScriptComplete","onload","doneFns","loadStylesheet","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","request","createStylesheet","installedCssChunks","miniCss","installedChunks","j","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","allowArrayLike","it","normalCompletion","didErr","_e2","_setPrototypeOf","_inherits","subClass","superClass","_getPrototypeOf","_isNativeReflectConstruct","sham","Proxy","Boolean","_assertThisInitialized","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","_construct","Parent","args","Class","Function","_wrapNativeSuper","_cache","Action","ResultType","PopStateEventType","invariant","warning","cond","getHistoryState","usr","idx","createLocation","to","_extends","pathname","hash","parsePath","substr","createPath","_ref$pathname","_ref$search","_ref$hash","path","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","_options2","_options2$window","_options2$v5Compat","v5Compat","globalHistory","history","Pop","getIndex","handlePop","nextIndex","delta","createURL","origin","URL","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","matchRoutes","routes","locationArg","basename","stripBasename","branches","flattenRoutes","sort","score","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matches","matchRouteBranch","safelyDecodeURI","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","startsWith","joinPaths","computeScore","_route$path","_step","_iterator","_createForOfIteratorHelper","explodeOptionalSegments","exploded","segments","_segments","first","rest","isOptional","endsWith","required","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","filter","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","pattern","_compilePath","paramNames","regexpSource","_","paramName","matcher","compilePath","_compilePath2","captureGroups","splatValue","decodeURIComponent","safelyDecodeURIComponent","decodeURI","startIndex","nextChar","getInvalidPathError","field","dest","getPathContributingMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","_ref4","_ref4$search","_ref4$hash","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","AbortedDeferredError","_Error","_super","isRouteErrorResponse","statusText","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","useLocation","UNSAFE_invariant","useIsomorphicLayoutEffect","static","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","navigate","fromRouteId","useNavigateStable","dataRouterContext","_React$useContext3","routePathnamesJson","UNSAFE_getPathContributingMatches","parse","relative","useNavigateUnstable","useParams","routeMatch","useResolvedPath","_temp2","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","_state$errors","useDataRouterState","UseRouteError","routeId","useRouteError","lightgrey","preStyles","padding","backgroundColor","fontStyle","defaultErrorElement","RenderErrorBoundary","_React$Component","revalidation","errorInfo","routeContext","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState2","_dataRouterState","errorIndex","findIndex","reduceRight","getChildren","hookName","ctx","useRouteContext","thisRoute","AwaitRenderStatus","Route","_props","Router","_ref5","_ref5$basename","basenameProp","_ref5$children","locationProp","_ref5$navigationType","_ref5$static","staticProp","navigationContext","_locationProp","_locationProp$pathnam","_locationProp$search","_locationProp$hash","_locationProp$state","_locationProp$key","locationContext","trailingPathname","Routes","_ref6","createRoutesFromChildren","neverSettledPromise","treePath","hasErrorBoundary","shouldRevalidate","createSearchParams","init","startTransitionImpl","BrowserRouter","future","historyRef","_window$location","setStateImpl","v7_startTransition","newState","isBrowser","ABSOLUTE_URL_REGEX","Link","absoluteHref","reloadDocument","preventScrollReset","_objectWithoutPropertiesLoose","UNSAFE_NavigationContext","isExternal","currentUrl","targetUrl","protocol","_temp","_React$useContext","_useResolvedPath","joinedPathname","useHref","internalOnClick","_ref12","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","NavLink","_ref5$ariaCurrent","ariaCurrentProp","_ref5$caseSensitive","_ref5$className","className","classNameProp","_ref5$end","styleProp","_excluded2","routerState","UNSAFE_DataRouterStateContext","nextLocationPathname","navigation","isActive","isPending","ariaCurrent","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","searchParams","locationSearch","defaultSearchParams","_loop","getAll","setSearchParams","nextInit","navigateOptions","newSearchParams","toPropertyKey","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_inheritsLoose","getChildMapping","mapFn","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","onExited","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","in","exit","enter","TransitionGroup","handleExited","contextValue","isMounting","firstRender","_proto","mounted","appear","currentChildMapping","_this$props","childFactory","TransitionGroupContext","replaceClassName","origClass","classToRemove","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appearStatus","unmountOnExit","mountOnEnter","nextCallback","prevState","updateStatus","prevProps","nextStatus","cancelNextCallback","getTimeouts","mounting","nodeRef","ReactDOM","performEnter","performExit","appearing","_ref2","maybeNode","maybeAppearing","timeouts","enterTimeout","config","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","cancel","nextState","setNextCallback","active","handler","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","childProps","noop","removeClass","classes","classList","baseVal","CSSTransition","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","classNames","isStringClassNames","baseClassName","activeClassName","doneClassName","phase","hasClass","_addClass","_this$appliedClasses$","_defineProperty","_iterableToArrayLimit","_arrayWithoutHoles","_nonIterableSpread","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","measure","MutationObserver","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","_ref$userAgent","userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","IS_IE","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_CSS_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_FA_PSEUDO_ELEMENT_PENDING","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","MUTATION_APPROACH_ASYNC","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","process","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","PREFIX_TO_STYLE","STYLE_TO_PREFIX","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","prefixes","RESERVED_CLASSES","initial","FontAwesomeConfig","attr","coerce","getAttrConfig","_default","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_config","_onChangeCb","meaninglessTransform","rotate","flipX","flipY","idPool","nextUniqueId","classArray","htmlEscape","str","joinStyles","styles","acc","styleName","transformIsMeaningful","transform","baseStyles","css","dcp","drc","fp","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","headChildren","childNodes","beforeChild","insertCss","InjectCSS","mixout","dom","hooks","beforeDOMElementCreation","beforeI2svg","shims","namespace","functions","loaded","toHtml","abstractNodes","_abstractNodes$attrib","attributes","_abstractNodes$childr","joinAttributes","iconFromMapping","mapping","prefix","iconName","icon","doScroll","readyState","subject","thisContext","bindInternal4","toHex","unicode","decoded","output","counter","charCodeAt","extra","ucs2decode","normalizeIcons","icons","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","cls","parts","build","lookup","reducer","alias","aliases","hasRegular","autoFetchSvg","shimLookups","maybeNameMaybeUnicode","names","unicodes","getCanonicalPrefix","family","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","emptyCanonicalIcon","styleOrPrefix","_params$family","defined","PREFIXES_FOR_FAMILY","getCanonicalIcon","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","canonical","aliasIconName","Library","definitions","additions","_pullDefinitions","longPrefix","_normalized$key","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","hook","accumulator","hookFn","callHooks","_len2","_key2","callProvided","findIconDefinition","iconLookup","i2svg","watch","autoReplaceSvgRoot","autoReplace","_icon","canonicalIcon","_prefix","api","noAuto","_params$autoReplaceSv","domVariants","abstractCreator","abstract","container","html","makeInlineSvgAbstract","_params$icons","main","mask","title","maskId","titleId","_params$watchable","watchable","found","isUploadedIcon","attrClass","content","role","uploadedIconWidthStyle","asSymbol","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","styleString","class","styles$1","asFoundIcon","vectorData","fill","missingIconResolutionMixin","findIcon","maybeNotifyMissing","noop$1","preamble","perf","begin","noop$2","isWatched","convertSVG","abstractObj","_params$ceFn","ceFn","mutators","mutation","_abstract","comment","createComment","outerHTML","nodeAsComment","replaceChild","nest","_abstract2","forSvg","splitClasses","toSvg","toNode","newInnerHTML","performOperationSync","op","perform","mutations","callbackFunction","frame","requestAnimationFrame","mutator","disableObservation","enableObservation","mo","observe","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","defaultPrefix","mutationRecord","addedNodes","hasPrefixAndIcon","_getCanonicalIcon","childList","characterData","subtree","classParser","existingPrefix","existingIconName","innerText","ligature","byLigature","Node","TEXT_NODE","parseMeta","parser","styleParser","_classParser","extraClasses","extraAttributes","attributesParser","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","root","htmlClassList","hclAdd","suffix","hclRemove","prefixesDomQuery","candidates","resolvedMutations","onNode","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","makeLayersCounterAbstract","LayersText","generateLayersText","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","position","pendingAttribute","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","_content","_hexValueFromContent","cleaned","codePoint","second","codePointAt","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","iconIdentifier","iconName4","oldUnicode","newUnicode","byOldUnicode","processable","operations","_unwatched","parseTransformString","transformString","parseFloat","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","outer","innerTranslate","innerScale","innerRotate","inner","ALL_SPACE","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","MissingIconIndicator","reduceMotion","matchMedia","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","nextPlugins","mixoutsTo","plugin","registerPlugins","pseudoElements2svg","unwatch","bootstrap","disconnect","symbolData","parse$1","camelize","chr","normalizeIconArgs","objectWithKey","FontAwesomeIcon","iconArgs","maskArgs","_classes","beat","fade","beatFade","bounce","shake","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","border","listItem","flip","rotation","pull","swapOpacity","renderedIcon","_console","extraProps","convertCurry","convert","attrs","pair","_extraProps$style","existingStyle","remaining","faTrashCan","faPenToSquare","faEdit","faArrowDownZA","faChevronUp","faUserGroup","faArrowUpAZ","faRotateLeft","faPause","faNewspaper","faVolumeHigh","faFloppyDisk","faSave","faClosedCaptioning","faPlay","faMagnifyingGlass","faChevronDown","faVolumeXmark","faVolumeMute","faMap","faCirclePlus","faPaperPlane","faX","HomeVideo","_useState","_useState2","play","setPlay","_useState3","_useState4","mute","setMute","_useState5","_useState6","max","setMax","_useState7","_useState8","progress","setProgress","_useState9","_useState10","captionsOn","setCaptionsOn","videoRef","progressRef","muteIcon","playIcon","hideButton","hide","ariaMuteText","handleVideoPlay","pause","_jsxs","videoContainer","_jsx","video","poster","muted","preload","onLoadedMetadata","duration","onTimeUpdate","currentTime","kind","srcLang","label","alt","videoControls","evt","rect","pos","offsetWidth","kindOf","thing","kindOfTest","typeOfTest","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","isDate","isFile","isBlob","isFileList","isURLSearchParams","_ref$allOwnKeys","allOwnKeys","findKey","_global","globalThis","global","isContextDefined","TypedArray","isTypedArray","Uint8Array","isHTMLForm","isRegExp","reduceDescriptors","descriptors","reducedDescriptors","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","assignValue","targetKey","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","searchString","lastIndex","forEachEntry","matchAll","regExp","exec","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","delimiter","toCamelCase","p1","p2","toFiniteNumber","isFinite","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","response","captureStackTrace","utils","toJSON","description","fileName","lineNumber","columnNumber","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","token","predicates","formData","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","isFlatArray","exposedHelpers","encode","charMap","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serializedParams","serializeFn","serialize","hashmarkIndex","InterceptorManager","handlers","synchronous","runWhen","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isStandardBrowserEnv","product","isStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","protocols","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","DEFAULT_CONTENT_TYPE","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","platform","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","_Symbol$iterator","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","parseHeaders","tokens","tokensRE","parseTokens","deleted","deleteHeader","format","formatHeader","_this$constructor","targets","asStrings","computed","accessors","defineAccessor","accessorName","arg1","arg2","arg3","buildAccessors","accessor","transformData","fns","normalize","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","write","expires","domain","secure","cookie","toGMTString","read","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","originURL","msie","urlParsingNode","resolveURL","host","hostname","port","requestURL","samplesCount","firstSampleTS","bytes","timestamps","chunkLength","startedAt","bytesCount","passed","round","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","total","lengthComputable","progressBytes","rate","estimated","XMLHttpRequest","onCanceled","requestData","requestHeaders","cancelToken","unsubscribe","signal","auth","username","unescape","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","settle","responseText","open","paramsSerializer","onreadystatechange","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","withCredentials","isURLSameOrigin","cookies","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","subscribe","aborted","parseProtocol","send","knownAdapters","http","xhr","xhrAdapter","adapters","nameOrAdapter","throwIfCancellationRequested","throwIfRequested","dispatchRequest","reason","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","VERSION","validators","deprecatedWarnings","validator","formatMessage","opt","opts","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","configOrUrl","contextHeaders","boolean","function","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","defaultConfig","Cancel","spread","isAxiosError","formToJSON","RandomTestimonial","item","setItem","resp","toast","testimonial","quote","testimonialText","byline","clientName","_Fragment","Homepage","cta","instantAccess","teleHealthLink","BlogCard","_props$post","post","primaryPhoto","postId","horizontalStyling","horizontal","firstClass","visible","invisible","LoadingIcon","loadingIcon","serverError","hideText","admin","ArticlesPage","blogPosts","blogs","setBlogs","isLoading","setIsLoading","setError","recentBlogs","blog","published","postedOn","localeCompare","ServerError","IndividualArticle","article","setArticle","articleId","_objectSpread","postedDate","day","year","toLocaleDateString","modifiedOptions","hour","minute","modifiedDate","lastModified","loadingContainer","articleContainer","author","ScrollBar","locations","handleSelectedLocation","selectLocation","scrollContainer","listLocations","locationId","street","suite","city","stateProvinceAbbreviation","postalCode","phone","address","extendStatics","__extends","__","__assign","__rest$1","__awaiter$1","__generator","trys","ops","verb","invariant_1","condition","argIndex","framesToPop","MapContext","applyUpdaterToNextProps","updaterMap","nextValue","registerEvents","eventMap","registeredList","googleEventName","onEventName","addListener","newAcc","unregisterEvent","registered","removeListener","unregisterEvents","events","applyUpdatersToPropsAndRegisterEvents","registeredEvents","eventMap$i","onDblClick","onDragEnd","onDragStart","onMapTypeIdChanged","onMouseMove","onMouseOut","onMouseOver","onMouseDown","onMouseUp","onRightClick","onTilesLoaded","onBoundsChanged","onCenterChanged","onDrag","onHeadingChanged","onIdle","onProjectionChanged","onResize","onTiltChanged","onZoomChanged","updaterMap$i","extraMapTypes","mapTypes","center","setCenter","clickableIcons","clickable","setClickableIcons","heading","setHeading","mapTypeId","setMapTypeId","setOptions","streetView","setStreetView","tilt","setTilt","setZoom","mapContainerStyle","mapContainerClassName","onLoad","onUnmount","setMap","_c","centerChangedListener","setCenterChangedListener","dblclickListener","setDblclickListener","dragendListener","setDragendListener","_f","dragstartListener","setDragstartListener","_g","mousedownListener","setMousedownListener","_h","mousemoveListener","setMousemoveListener","_j","mouseoutListener","setMouseoutListener","_k","mouseoverListener","setMouseoverListener","_l","mouseupListener","setMouseupListener","_m","rightclickListener","setRightclickListener","_o","clickListener","setClickListener","_p","dragListener","setDragListener","GoogleMap","mapRef","getInstance","panTo","latLng","setMapCallback","getRef","injectScript","existingScript","windowWithGoogleMap","dataStateAttribute","originalInitMap_1","initMap","originalErrorCallback_1","isGoogleFontStyle","styleSheet","cssText","preventGoogleFonts","trueInsertBefore_1","newElement","referenceElement","trueAppend_1","textNode","makeLoadScriptUrl","googleMapsApiKey","googleMapsClientId","invariant$1","cleaningUp","DefaultLoadingElement","previouslyLoadedUrl","defaultLoadScriptProps","LoadScript","check","cleanupCallback","isCleaningUp","promiseCallback","timer_1","setInterval","clearInterval","cleanup","preventGoogleFontsLoading","loadingElement","defaultLoadingElement","isLoaded","setLoaded","loadError","setLoadError","setLoadedIfMounted","prevLibraries","useLoadScript","eventMap$h","updaterMap$h","setInstance","trafficLayer","TrafficLayer","setTrafficLayerCallback","bicyclingLayer","BicyclingLayer","setBicyclingLayerCallback","transitLayer","TransitLayer","setTransitLayerCallback","eventMap$g","onCircleComplete","onMarkerComplete","onOverlayComplete","onPolygonComplete","onPolylineComplete","onRectangleComplete","updaterMap$g","drawingMode","setDrawingMode","circlecompleteListener","setCircleCompleteListener","markercompleteListener","setMarkerCompleteListener","overlaycompleteListener","setOverlayCompleteListener","polygoncompleteListener","setPolygonCompleteListener","polylinecompleteListener","setPolylineCompleteListener","rectanglecompleteListener","setRectangleCompleteListener","drawing","drawingManager","DrawingManager","setDrawingManagerCallback","eventMap$f","onAnimationChanged","onClickableChanged","onCursorChanged","onDraggableChanged","onFlatChanged","onIconChanged","onPositionChanged","onShapeChanged","onTitleChanged","onVisibleChanged","onZindexChanged","updaterMap$f","setAnimation","setClickable","cursor","setCursor","draggable","setDraggable","setIcon","setLabel","setOpacity","setPosition","setShape","setTitle","setVisible","setZIndex","defaultOptions$5","clusterer","noClustererRedraw","clickableChangedListener","setClickableChangedListener","cursorChangedListener","setCursorChangedListener","_q","animationChangedListener","setAnimationChangedListener","draggableChangedListener","setDraggableChangedListener","flatChangedListener","setFlatChangedListener","_t","iconChangedListener","setIconChangedListener","_u","positionChangedListener","setPositionChangedListener","_v","shapeChangedListener","setShapeChangedListener","_w","titleChangedListener","setTitleChangedListener","visibleChangedListener","setVisibleChangedListener","_y","zIndexChangedListener","setZindexChangedListener","markerOptions","marker","Marker","addMarker","removeMarker","chx","elementChild","anchor","ClusterIcon","cluster","getClusterer","OverlayView","clusterClassName","getClusterClass","div","sums","boundsChangedListener","anchorText","anchorIcon","textColor","textSize","textDecoration","backgroundPosition","cMouseDownInCluster","cDraggingMapByCluster","timeOut","getMap","onAdd","onRemove","draw","show","useStyle","getPosFromLatLng","markerClusterer_1","trigger","getZoomOnClick","maxZoom_1","getMaxZoom","bounds_1","getBounds","fitBounds","getZoom","getPanes","overlayMouseTarget","divTitle","getTitle","bp","spriteH","spriteV","enableRetinaIcons","clip","textElm","getStyles","latlng","getProjection","fromLatLngToDivPixel","Cluster$1","Cluster","markerClusterer","gridSize","getGridSize","minClusterSize","getMinimumClusterSize","averageCenter","getAverageCenter","markers","bounds","clusterIcon","getSize","getMarkers","getCenter","isMarkerInClusterBounds","calculateBounds","updateIcon","isMarkerAlreadyAdded","LatLngBounds","markers_1","getPosition","length_1","LatLng","lat","lng","isAdded","mCount","maxZoom","getExtendedBounds","getCalculator","CALCULATOR","numStyles","numberOfDigits","IMAGE_SIZES","Clusterer","optMarkers","optOptions","setMinimumClusterSize","getEnableRetinaIcons","setEnableRetinaIcons","addToClosestCluster","getImageExtension","setImageExtension","setAverageCenter","getTotalClusters","fitMapToMarkers","getIgnoreHidden","setIgnoreHidden","setClusterClass","getTotalMarkers","setZoomOnClick","getBatchSizeIE","setBatchSizeIE","createClusters","getImageSizes","setImageSizes","setCalculator","removeMarkers","resetViewport","getImagePath","setImagePath","pushMarkerTo","clearMarkers","setupStyles","setGridSize","getClusters","setMaxZoom","addMarkers","setStyles","repaint","redraw","clusters","activeMap","ready","minimumClusterSize","zoomOnClick","ignoreHidden","imagePath","imageExtension","imageSizes","calculator","batchSize","batchSizeIE","clusterClass","timerRefStatic","fromContainerPixelToLatLng","fromDivPixelToLatLng","fromLatLngToContainerPixel","getVisibleRegion","getWorldWidth","bindTo","notify","setValues","unbind","unbindAll","optNoDraw","getDraggable","removeMarker_","removed","markers_2","oldClusters","oldClusters_1","projection","trPix","getNorthEast","blPix","getSouthWest","point1","point2","optHide","distanceBetweenPoints","dLat","PI","dLon","sin","cos","atan2","sqrt","isMarkerInBounds","distance","clusterToAddTo","iFirst","mapBounds","extendedMapBounds","iLast","getVisible","obj1","obj2","property","eventMap$e","onClusteringBegin","onClusteringEnd","updaterMap$e","defaultOptions$4","clusteringBeginListener","setClusteringBeginListener","clusteringEndListener","setClusteringEndListener","clustererOptions","ClustererComponent","setClustererCallback","cancelHandler","InfoBox","getCloseClickHandler","closeClickHandler","createInfoBoxDiv","addClickHandler","getCloseBoxImg","getBoxWidths","setBoxStyle","setContent","getContent","getZIndex","panBox","close","disableAutoPan","maxWidth","pixelOffset","Size","boxClass","boxStyle","closeBoxMargin","closeBoxURL","infoBoxClearance","alignBottom","pane","enableEventPropagation","closeListener","moveListener","mapListener","contextListener","eventListeners","fixedWidthSet","panes","bw","right","events_1","event_1","disablePan","xOffset","yOffset","mapDiv","getDiv","mapWidth","mapHeight","offsetHeight","iwOffsetX","iwOffsetY","iwWidth","iwHeight","padX","padY","pixPosition","panBy","webkitTransform","msFilter","visibility","bottom","computedStyle","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","currentStyle","isVisible","eventListener","eventMap$d","onCloseClick","onContentChanged","onDomReady","updaterMap$d","defaultOptions$3","closeClickListener","setCloseClickListener","domReadyClickListener","setDomReadyClickListener","contentChangedClickListener","setContentChangedClickListener","positionChangedClickListener","setPositionChangedClickListener","zIndexChangedClickListener","setZindexChangedClickListener","containerElementRef","positionLatLng","position_1","infoBoxOptions","infoBox","InfoBoxComponent","containerElement","setInfoBoxCallback","ARRAY_TYPES","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","KDBush","numItems","nodeSize","ArrayType","IndexArrayType","arrayTypeIndex","coordsByteSize","BYTES_PER_ELEMENT","idsByteSize","padCoords","ids","coords","_pos","_finished","numAdded","minX","minY","maxX","maxY","axis","qx","qy","r2","sqDist","_Uint8Array","_Uint8Array2","magic","versionAndType","_Uint16Array","_Uint32Array","select","exp","swapItem","swap","tmp","ax","ay","bx","by","dx","dy","defaultOptions$2","minZoom","minPoints","radius","extent","generateId","fround","OFFSET_ID","OFFSET_NUM","OFFSET_PROP","Supercluster","trees","stride","clusterProps","points","_this$options","timerId","geometry","_p$geometry$coordinat","coordinates","lngX","latY","tree","_createTree","timeEnd","_cluster","bbox","minLng","minLat","maxLng","maxLat","easternHem","westernHem","_limitZoom","getClusterJSON","clusterId","originId","_getOriginId","originZoom","_getOriginZoom","errorMsg","_step2","_iterator2","within","limit","leaves","_appendLeaves","z2","_this$options2","tile","features","_addTileFeatures","expansionZoom","properties","cluster_id","skipped","_step3","_iterator3","point_count","_step4","_iterator4","isCluster","tags","px","py","getClusterProperties","_p$geometry$coordinat2","_this$options3","nextData","_step5","neighborIds","numPointsOrigin","numPoints","_iterator5","_step6","wx","wy","clusterProperties","clusterPropIndex","_iterator6","numPoints2","_map","_step7","_iterator7","clone","original","xLng","yLat","abbrev","propIndex","point_count_abbreviated","y2","atan","__rest","MarkerUtils","getMapCapabilities","isAdvancedMarkersAvailable","AdvancedMarkerElement","isAdvancedMarker","_position","_step8","_iterator8","AbstractAlgorithm","_ref5$maxZoom","SuperClusterAlgorithm","_AbstractAlgorithm3","_super5","_this9","_a$radius","superCluster","changed","_ref11","_this10","feature","transformCluster","_ref12$geometry$coord","getLeaves","leaf","ClusterStats","sum","clusterMarkerCounts","clusterMarkerSum","mean","DefaultRenderer","_ref13","stats","svg","MAX_ZINDEX","isAdvancedMarkerAvailable","svgEl","firstElementChild","clusterOptions","Point","MarkerClustererEvents","OverlayViewSafe","type1","type2","defaultOnClusterClickHandler","MarkerClusterer","_OverlayViewSafe","_super6","_ref14","_this11","_ref14$markers","_ref14$algorithmOptio","algorithmOptions","_ref14$algorithm","algorithm","_ref14$renderer","renderer","_ref14$onClusterClick","onClusterClick","noDraw","_this12","_this13","CLUSTERING_BEGIN","_this$algorithm$calcu","calculate","mapCanvasProjection","_step9","singleMarker","_iterator9","_step10","groupMarkers","_iterator10","renderClusters","CLUSTERING_END","idleListener","_this14","CLUSTER_CLICK","useGoogleMarkerClusterer","useGoogleMap","setMarkerClusterer","markerCluster","eventMap$c","updaterMap$c","closeclickListener","domreadyclickListener","contentchangedclickListener","positionchangedclickListener","zindexchangedclickListener","infoWindow","InfoWindow","setInfoWindowCallback","eventMap$b","updaterMap$b","editable","setEditable","setPath","defaultOptions$1","polyline","Polyline","setPolylineCallback","eventMap$a","updaterMap$a","setPaths","polygon","Polygon","setPolygonCallback","eventMap$9","updaterMap$9","setBounds","rightClickListener","setRightClickListener","setBoundsChangedListener","rectangle","Rectangle","setRectangleCallback","eventMap$8","onRadiusChanged","updaterMap$8","setRadius","defaultOptions","radiusChangedListener","setRadiusChangedListener","circle","Circle","setCircleCallback","eventMap$7","onAddFeature","onRemoveFeature","onRemoveProperty","onSetGeometry","onSetProperty","updaterMap$7","addgeojson","geojson","addGeoJson","foreach","loadgeojson","loadGeoJson","overridestyle","overrideStyle","revertstyle","revertStyle","controlposition","controlPosition","setControlPosition","controls","setControls","drawingmode","setStyle","togeojson","toGeoJson","addFeatureListener","setAddFeatureListener","removeFeatureListener","setRemoveFeatureListener","removePropertyListener","setRemovePropertyListener","setGeometryListener","setSetGeometryListener","setPropertyListener","setSetPropertyListener","Data","setDataCallback","data_1","eventMap$6","onDefaultViewportChanged","onStatusChanged","updaterMap$6","setUrl","KmlLayer","kmlLayer","setKmlLayerCallback","getOffsetOverride","getPixelPositionOffset","createLatLng","inst","Type","createLatLngBounds","sw","getLayoutStyles","getLayoutStylesByBounds","point","getLayoutStylesByPosition","ensureOfType","convertToLatLngString","latLngLike","convertToLatLngBoundsString","latLngBoundsLike","south","east","north","west","mapPaneName","overlay","Overlay","layoutStyles","createOverlay","paneEl","containerStyle","updatePane","mapPanes","overlayView","onPositionElement","currentPosition","previousPosition","containerRef","prevPositionString","positionString","prevBoundsString","boundsString","FLOAT_PANE","MAP_PANE","MARKER_LAYER","OVERLAY_LAYER","OVERLAY_MOUSE_TARGET","eventMap$5","updaterMap$5","imageBounds","groundOverlay","GroundOverlay","newBounds","setGroundOverlayCallback","eventMap$4","updaterMap$4","setData","visualization","heatmapLayer","HeatmapLayer","setHeatmapLayerCallback","eventMap$3","onPanoChanged","onPovChanged","updaterMap$3","register","provider","registerPanoProvider","links","setLinks","motionTracking","setMotionTracking","pano","setPano","pov","setPov","eventMap$2","StreetViewPanorama","streetViewPanorama","setStreetViewPanoramaCallback","getStreetView","StreetViewService","streetViewService","setStreetViewServiceCallback","DirectionsService","directionsService","setDirectionsServiceCallback","onDirectionsChanged","updaterMap$2","directions","setDirections","panel","setPanel","routeIndex","setRouteIndex","eventMap$1","DirectionsRenderer","directionsRenderer","setDirectionsRendererCallback","DistanceMatrixService","distanceMatrixService","setDistanceMatrixServiceCallback","getDistanceMatrix","onPlacesChanged","updaterMap$1","StandaloneSearchBox","searchBox","setSearchBoxCallback","places","searchBox_1","SearchBox","onPlaceChanged","restrictions","setComponentRestrictions","fields","setFields","types","setTypes","Autocomplete","autocomplete","setAutocompleteCallback","autocomplete_1","defaultCenter","mapOptions","fullscreenControl","mapTypeControl","zoomLevelToSet","setZoomLevel","selectedMarker","setSelectedMarker","markerIcon","scaledSize","place","latitude","longitude","handleOnLoad","mapInstance","handleInfoWindowClose","Locations","setLocations","setServerError","setLoading","displayLocations","setDisplayLocations","stateFocus","setStateFocus","_useState11","_useState12","searchTerm","setSearchTerm","_useState13","_useState14","selectedLocation","setSelectedLocation","inputRef","sortName","sortState","handleStateClick","closestButton","closest","grid","searchBar","onSubmit","stateProvinceName","placeholder","onChange","locationsSidebar","topic","shortUrl","subTopic","videoSrc","HowHelp","howHelpContainer","howHelp","IndividualHelp","toggleDropdown","setToggleDropdown","mainTopic","setMainTopic","selectedItem","setSelectedItem","isVideoPlaying","setIsVideoPlaying","isEnter","setIsEnter","setMuted","helpVideoRef","find","findHelp","handlePlayVideo","handlePauseVideo","handleTranscriptShow","transcript","handleRestartVideo","handleMute","handlePageReturn","handleShowDropdown","toggleClass","toggleVisible","toggleInvisible","topicButtons","mobileButton","imgStyle","playButton","soundButton","dropDownSection","modal","enterActive","exitActive","selectedHelpTopics","transcriptContainer","textContainer","tabIndex","helpVideoControlsContainer","helpVideoContainer","helpVideoControlsMobileContainer","faqs","toggleContent","setToggleContent","iconSelect","faqItem","displayTopics","setDisplayTopics","renderData","faqData","searchFor","insurance","elt","FaqItem","AnewFooter","third","fourth","logo","anewLogo","subfooter","socialmedia","copy","designed","asyncGeneratorStep","gen","_next","_throw","elem","valid","states","abbreviation","stateProvinceId","handleAddStateModal","errorContent","errMsgs","labelText","htmlFor","formBuilder","configInput","settings","validation","buildForm","elements","Input","checkValidity","inputConfig","entireForm","minLength","reqLength","sameAs","otherPropConfig","ReCAPTCHA","handleExpired","handleErrored","handleChange","handleRecaptchaRef","getCaptchaFunction","fnName","grecaptcha","enterprise","getResponse","_widgetId","getWidgetId","_executeRequested","executeAsync","executionResolve","executionReject","resetter","forceReset","onExpired","onErrored","explicitRender","wrapper","sitekey","theme","tabindex","stoken","badge","isolated","captcha","SCRIPT_MAP","idCount","callbackName","getOptions","recaptchaOptions","getScriptURL","dynamicOptions","useRecaptchaNet","globalName","WrappedComponent","wrappedComponentName","AsyncScriptLoader","_Component","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","obsKey","observers","scriptURL","_options","scriptId","errored","attribute","callObserverFuncAndRemoveObserver","observersMap","observer","removeOnUnmount","allScripts","forwardedRef","ForwardedComponent","hoistStatics","formMessage","subscribeBox","setSubscribeBox","formSent","setFormSent","contactForm","setContactForm","captchaRef","handleCheckBoxChange","sub","handleSubmit","hasError","permissionChecked","captchaToken","contact","updatedForm","updatedElement","setProvider","displayProviders","setDisplayProviders","providerList","setProviderList","revealList","setRevealList","sortFirstName","firstName","sortLastName","lastName","tele","roomUrl","handleSelectIndividual","callButton","toLink","TeamLoading","OurTeamPage","AdminHome","adminHome","cssClasses","clicked","deleteModal","btnContainer","tableHeadings","hideLink","desktopHide","mobileHide","ArticlesDashboard","displayBlogs","setDisplayBlogs","filterTopic","setFilterTopic","selectedTopic","setSelectedTopic","displayModal","setDisplayModal","_useState15","_useState16","deleteItem","setDeleteItem","_useState17","_useState18","serverProblem","setServerProblem","topicsSort","tableResults","handleFilterTopicChange","isAscending","handleHideModalDisplay","theadings","blogTable","modifiedTime","postedTime","postedOnDate","articlesTable","Backdrop","DeleteModal","newBlogList","success","topRow","AUTH_KEY","zeroDate","defaultAuthValue","expiration","setAuth","dateString","dateValue","_unused","authData","sessionStorage","getAuth","getItem","_unused2","clearAuth","removeItem","toolbarSettings","items","command","subCommand","fontColor","colorCode","Custom","modeSwitcher","quickToolbarSettings","image","insertImageSettings","saveUrl","handleImageUploadSuccess","file","filename","imageUploadingHandler","req","currentRequest","instances","uid","isBlazorPlatform","classFunction","arrayParam","num","msCrypto","crypto","getRandomValues","ret","combineArray","messageHandler","nameSpace","splits","fromObj","isNullOrUndefined","deleteObject","containerObject","getEnumValue","enumObject","enumValue","destination","temrObj","tempProp","deepmerge","keys_1","copied","deep","_loop_1","arguments_1","isArrayChanged","blazorEventExtend","isBlazor","Event","getUniqueID","definedName","debounce","eventFunction","out","compareElementParent","parent","throwError","formatUnit","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","propKeys_1","getSymbolRegex","regexStr","getSymbolMatch","matchKeys_1","constructRegex","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","dateCorrection","getHijriDate","gDate","getDate","getMonth","getFullYear","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","cyc","iy","im","tempDay","iln","hYear","hmonth","hDate","toGregorian","julianDate","gDay","gMonth","gYear","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","datePartMatcher","DateFormat","dateFormat","culture","cldr","dependable","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","isServerRendered","compareBlazorDateFormats","resPattern","getResultantPattern","skeleton","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","numMapper","parserObject","patternMatch_1","weekday","monthIndex","days","designator","eText","era","timeZone","intDateFormatter","dateParseRegex","dObject","getCurrentDateValue","matches_1","curval","curvalstr","processNumber","curstr","getDay","curlength","desig","getHours","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","curPattern","no","abs","ishour","errorText","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","defaultCurrency","nData","pData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","intNumberFormatter","negativeDataRegex","lastIndexOf","temp","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","isCustomFormat","decimalPart","toExponential","customPivotFormat","groupNumbers","nlead","nend","toPrecision","level1","sep","decimalSymbol","level2","flag","toFixed","lead","decimal","latnRegex","milliseconds","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","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","getMinutes","retOptions","props_1","curObject","matchString","internalNumberParser","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","NaN","exponent","convertMaxFracDigits","decimalSplitValue","Observer","ranArray","boundedEvents","on","cntxt","notExist","isHandlerPresent","off","indexLocation","argument","successHandler","errorHandler","blazorCallback","curObject_1","objs","isTrigger","obj_1","isJson","dateReviver","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","IntlBase","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","blazorCultureFormats","customRegex","fractionRegex","patternRegex","dateConverterMapper","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","blazorCulture","iType","basicPatterns","dPattern","tPattern","calendartype","blazorDefaultObject","defaultObject","numSystem","convertMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","currencyCode","customNumberFormat","integerPart","spaceCapture","spaceGrouping","fractionPart","isCurrencyPercent","actual","part","fractionDigitsPattern","minDigits","maxDigits","diff","minimumIntegerPattern","integer","groupingPattern","formatSplit","dateObj","actualPattern","tLength","timeZonePattern","options_1","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","cPattern","processSymbol","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","getTime","nday","headerRegex","Ajax","emitError","eventArgs","httpRequest","stateChange","onProgress","onprogress","onAbort","beforeSend","onSuccess","failureHandler","onFailure","dataType","getResponseHeader","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","getEvent","isPointer","isTouch","isDevice","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isSafari","isIos","regX","maxTouchPoints","uA","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","eventName","intDebounce","debounceListener","eventData","isIE","clearEvents","copyData","eventProp","eventData_1","SVG_REG","getClassList","ele","classList_1","curClass","classList_2","classArr","prepend","fromElements","isEval","docFrag","createDocumentFragment","executeScript","NodeList","detach","iKey","selector","needsVDOM","querySelectId","selectAll","charRegex","idList","list","splitId","setId","setStyleAttribute","addClasses","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","sfBlazor","updateModel","saveChanges","newValue","oldValue","moduleClass","getModuleName","ej2_instances","getComponent","comp","getObject","curKey","getObjectArray","isSetter","isFactory","curType","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexArrayGetter","defCollection","ignore","controlParent","extendFunc","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","model_1","getArrayModel","model","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","curText","__decorate","decorators","decorate","Animation","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","getModel","elements_1","element_1","delayAnimation","animationId","frameId","cancelAnimationFrame","animationMode","applyAnimation","prevTimeStamp","startAnimation","avg","timingFunction","fail","newProp","oldProp","rippleHandler","rippleOptions","offsetX","offsetY","diameter","isCenterRipple","rippleElement","rippleLeaveHandler","rippleUpHandler","removeRipple","rippleElements","getElementsByClassName","isRippleEnabled","accountURL","ModuleLoader","loadedModules","requiredModules","moduleList","clearUnusedModule","modl","moduleList_1","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","modules","usedModules","removableModule_1","mod","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","parent_1","parentKey","complexKeys","isFinal","valueLength","componentList","bypassKey","LicenseValidator","isValidated","isLicensed","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","manager","licKey","setKey","getKey","npxManager","validate","convertToChar","validateMsg","validateURL","getInfoFromKey","result_1","invalidPlatform","expiryDate","expDate","currDate","licenseContent","errorDiv","getDecryptedData","atob","pkey","decryptedStr","resultArray","isNpxKey","licKeySplit","licKeySplit_1","lKey","decodeStr","buffr","decryptedKey","licenseValidator","cArr","cArr_1","registerLicense","lastPageID","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","versionBasedStatePersistence","randomId","uniqueID","isStringTemplate","needsID","isReactHybrid","enableRtl","moduleLoader","localObserver","detectFunction","appendTo","enablePersistence","setPersistData","refresh","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","localStorage","ej2StatePersistenceVersion","mergePersistData","bannerTemplate","errorBackground","createLicenseOverlay","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","currentContext","calls","getPersistData","renderReactTemplates","clearTemplate","templateName","isHistoryChanged","pageID","addOnPersist","persistObj","objValue","getActualProperties","ignoreOnPersist","iterateJsonProperties","ignoreList","newObj","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","enableTapHold","mobileInitialize","initialize","removeTapholdTimer","tapHoldThreshold","getScrollableParent","tempScrollHeight","scrollHeight","tempScrollWidth","scrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abortSelectors","intCoord","getCoordinates","initialPosition","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","isDragScroll","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","offsetTop","offsetLeft","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","isDialogEle","tempDraEleTop","dragValue","enableAutoScroll","scrollIntoView","getPathElements","scrollParent","getScrollParent","getScrollPosition","hasScroll","nodeEl","clientHeight","scrollingElement","nodeEle","elementTop","elementLeft","elementsFromPoint","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","isOffsetParent","isVerticalScroll","clientWidth","cursorAt","sender","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","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","localeObject","getConstant","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","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","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","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","blazorTemplateId","blazorId","Engine","removeTags","removeAttrs","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","sanitize","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","hasAttribute","validateLicense","elementRect","popupRect","parentDocument","targetContainer","fixedParent","calculatePosition","currentElement","positionX","positionY","targetValues","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","popupWidth","fit","viewPortElement","elemData","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","removeProperty","edge","updateElementData","leftFlip","topFlip","setPopup","eStatus","deepCheck","collideSide","getTargetContainerLeft","getTargetContainerTop","windowWidth","documentReact","PositionData","CLASSNAMES","Popup","setEnableRtl","refreshPosition","actionOnScroll","wireScrollEvents","unwireScrollEvents","resolveCollision","checkCollision","relateTo","orientationOnChange","getRelateToElement","scrollRefresh","parent_2","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","parent_3","isElementVisible","checkGetBoundingClientRect","win","windowView","scrollY","scrollX","outerWidth","outerHeight","elementView","parent_4","reposition","relateToElem","collision","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","anchorPos","fixedElement","tempAnchor","calculateRelativeBasedPosition","targetType","callFlip","callFit","viewPortRect","horz","vert","animationOptions","relativeElement","fmDialogContainer","zIndexElement","getZindexPartial","showAnimation","hideAnimation","parentStyle","overflowRegex","parentZindex","childrenZindex","isEqualNode","siblingsZindex","finalValue","currentZindexValue","RenderType","ToolbarType","DialogType","tableclass","initialLoad","contentChanged","initialEnd","iframeMouseDown","toolbarClick","toolbarRefresh","refreshBegin","toolbarUpdated","bindOnEnd","renderColorPicker","htmlToolbarClick","destroyColorPicker","modelChanged","keyUp","keyDown","mouseUp","toolbarRenderComplete","enableFullScreen","disableFullScreen","dropDownSelect","beforeDropDownItemRender","execCommandCallBack","imageToolbarAction","linkToolbarAction","windowResize","insertLink","unLink","editLink","openLink","actionBegin","actionComplete","updateToolbarItem","insertImage","insertCompleted","imageLink","imageAlt","imageDelete","imageCaption","imageSize","sourceCode","updateSource","beforeDropDownOpen","selectionSave","selectionRestore","expandPopupClick","mouseDown","sourceCodeMouseDown","editAreaClick","scroll","contentscroll","colorPickerChanged","tableColorPickerChanged","focusChange","selectRange","getSelectedHtml","renderInlineToolbar","paste","rtlMode","checkUndo","readOnlyMode","moduleDestroy","enterHandler","clearDialogObj","imageUploading","imageUploadSuccess","imageUploadFailed","afterImageDelete","xhtmlValidation","beforeImageUpload","resizeInitialized","renderFileManager","dynamicModule","updateTbItemsStatus","showLinkDialog","closeLinkDialog","showImageDialog","closeImageDialog","bindCssClass","blockEmptyNodes","inlineEmptyNodes","CLS_RTE","CLS_RTL","CLS_DISABLED","CLS_SCRIPT_SHEET","CLS_STYLE_SHEET","CLS_TOOLBAR","CLS_TB_FIXED","CLS_TB_FLOAT","CLS_TB_ABS_FLOAT","CLS_INLINE","CLS_RTE_EXPAND_TB","CLS_FULL_SCREEN","CLS_QUICK_TB","CLS_POP","CLS_QUICK_DROPDOWN","CLS_INLINE_POP","CLS_INLINE_DROPDOWN","CLS_DROPDOWN_POPUP","CLS_DROPDOWN_ICONS","CLS_DROPDOWN_ITEMS","CLS_DROPDOWN_BTN","CLS_RTE_CONTENT","CLS_TB_ITEM","CLS_TB_WRAP","CLS_SHOW","CLS_HIDE","CLS_VISIBLE","CLS_FOCUS","CLS_RM_WHITE_SPACE","CLS_IMGRIGHT","CLS_IMGLEFT","CLS_IMGCENTER","CLS_IMGBREAK","CLS_CLICKELEM","CLS_VID_CLICK_ELEM","CLS_AUDIOWRAP","CLS_VIDEOWRAP","CLS_CAPTION","CLS_CAPINLINE","CLS_IMGINLINE","CLS_ICONS","CLS_ACTIVE","CLS_EXPAND_OPEN","CLS_RTE_ELEMENTS","CLS_TB_BTN","CLS_TB_IOS_FIX","CLS_LIST_PRIMARY_CONTENT","CLS_COLOR_CONTENT","CLS_RTE_READONLY","CLS_RTE_HIDDEN","CLS_RTE_IMAGE","CLS_RTE_DRAG_IMAGE","CLS_POPUP_OPEN","CLS_RTE_FIXED_TB_EXPAND","CLS_RTE_TB_ENABLED","Render","locator","getService","contentRenderer","getRenderer","Content","renderPanel","requestType","editorMode","contentModule","getEditPanel","enterKey","formatter","editorManager","nodeSelection","setCursorPoint","getDocument","KEY_DOWN","ACTION","FORMAT_TYPE","KEY_DOWN_HANDLER","LIST_TYPE","KEY_UP_HANDLER","KEY_UP","MODEL_CHANGED_PLUGIN","MODEL_CHANGED","MS_WORD_CLEANUP_PLUGIN","ON_BEGIN","SPACE_ACTION","FORMAT_PAINTER_ACTIONS","isMetaKey","ViewSource","serviceLocator","rendererFactory","onInitialEnd","updateSourceCode","CONSTANT","onKeyDown","unWireEvent","getSourceCode","cssClass","wireEvent","keyboardModule","previewKeyDown","keyConfig","previewElement","mouseDownHandler","wireBaseKeyDown","unWireBaseKeyDown","enable","toolbarModule","baseToolbar","toolbarObj","callBack","isBlur","targetItem","tbItems","updateItem","getBaseToolbarObject","updateValueData","iframeSettings","rteContent","getPanel","getTextAreaValue","disableToolbarItem","enableToolbarItem","getToolbar","setContentHeight","updateValue","invokeChangeEvent","editHTML","enableUndo","addAudioVideoWrapper","getViewPanel","executeGroup","ServiceLocator","services","RendererFactory","rendererMap","addRenderer","rName","ExecCommandCallBack","commandCallBack","saveData","AjaxSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","columnArray","headerText","minWidth","isPrimaryKey","customAttributes","DetailsViewSettings","NavigationPaneSettings","SearchSettings","toolbarItems","ToolbarSettings","UploadSettings","templateItems","tools","alignmentLocale","alignmentItems","iconCss","imageAlignItems","videoAlignItems","displayLocale","audioLayoutOptionLocale","videoLayoutOptionLocale","imageDisplayItems","audioLayoutOptionItems","videoLayoutOptionItems","tableCellItems","tableRowLocale","tableRowsItems","tableColumnLocale","tableColumnsItems","tableVerticalLocale","TableCellVerticalAlignItems","tableStyleLocale","TableStyleItems","predefinedItems","formatItems","numberFormatList","bulletFormatList","getLocale","localeItems","localeObj","windowKeys","Expand","ImageSettings","AudioSettings","VideoSettings","FileManagerSettings","getImageUrl","uploadUrl","folder","layout","FileToolbarSettings","autoUpload","minFileSize","maxFileSize","allowedExtensions","autoClose","TableSettings","QuickToolbarSettings","FormatPainterSettings","PasteCleanupSettings","FontFamily","FontSize","Format","FontColor","BackgroundColor","NumberFormatList","BulletFormatList","Resources","IFrameSettings","InlineMode","defaultLocale","toolsLocale","fontNameLocale","formatsLocale","numberFormatListLocale","bulletFormatListLocale","setAttributes","htmlAttributes","rte","isFrame","htmlAttr","enabled","setEnable","readonly","setReadOnly","inputElement","setPlaceHolder","valueContainer","FullScreen","showFullScreen","isNOU","quickToolbarModule","hideQuickToolbars","scrollableParent","evenArgs","beginEventArgs","enableFloating","inlineMode","getToolbarElement","toggleParentOverflow","isExpand","removeItems","removeFixedTBarClass","refreshUI","hideFullScreen","addFixedTBarClass","isAdd","EnterKeyAction","getRangeNode","getRange","startNode","startContainer","endNode","endContainer","isTableEnter","formatTags","curElement","blockElement","domNode","isBlockNode","shiftKey_1","actionBeginArgs","startOffset","endOffset","deleteContents","focusElem","currentFocusElem","currentLastElem","shiftEnterKey","newElem","createInsertElement","nearBlockNode","blockParentNode","isMediaNode","isFocusedFirst","splitFirstText","removeBRElement","isNearBlockLengthZero","nodeCutter","SplitNode","cloneNode","insertElem","toLocaleLowerCase","finalFocusElem","nextElementSibling","audioVideoElem","isBRInserted","lastNode","brElm","audioModule","hideAudioQuickToolbar","videoModule","hideVideoQuickToolbar","startParentElem","isHeadingTag","insertElm","insertAfter","currentParent","currentNode","previousNode","currentParentLastChild","isLastNodeLength","isImageElement","focusBRElem","imageElement","lineBreakBRElem","insertBRElement","outerBRElem","insertFocusContent","isEmptyBrInserted","isFocusTextNode","insertNode","brElm2","undoRedoItems","inlineNode","getDropDownValue","returnType","isIDevice","getFormattedFontSize","getTooltipText","i10n","itemLocale","setToolbarStatus","isPopToolbar","updateDropDownFontFormatLocale","dropDown","dropDownModule","itemStr","tbElements","formatDropDown","formatContent","alignDropDown","fontNameDropDown","fontNameItems","fontNameContent","name_1","fontSizeDropDown","fontSizeItems","fontSizeContent","getCollection","getTBarItemsIndex","itemsIndex","updateUndoRedoStatus","undoRedoStatus","trgItems","keys_2","enableItems","createEvent","initEvent","parseHtml","tempNode","DocumentFragment","createContextualFragment","getTextNodesUnder","docElement","toObjectLowerCase","convertedValue","getEditValue","rteObj","enableHtmlEncode","updateTextNode","decode","resultElm","isPreviousInlineElem","previousParent","emptyBlockElem","emptyInlineElem","imageElm","getDefaultValue","isEditableValueEmpty","convertToBlob","dataUrl","mime","bstr","u8arr","getLocaleFontFormat","rippleEffect","rippleModel","rippleFlag","getRippleModel","wrapperInitialize","WRAPPER","ejInstance","getTextNode","childnode","rippleMouseHandler","rippleSpan","IconPosition","targetElement","selectedHandler","minHeight","maxHeight","resizeWestWidth","cssClassName","Button","removeRippleEffect","tempContent","enableHtmlSanitizer","setIconCss","controlStatus","span","iconPosition","isToggle","btnClickHandler","unWireEvents","click","focusIn","elementClass","RESIZE_HANDLER","FOCUSED_HANDLER","DIALOG_RESIZABLE","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","dialogBorderResize","originalWidth","originalHeight","originalX","originalY","originalMouseX","originalMouseY","resizeStart","resize","resizeEnd","setLeft","previousWidth","setWidth","setBorderResizeElm","direction","calculateValues","borderBottom","getDOMElement","domElement","resizers","onTouchStart","borderResizers","getEventType","targetEle","dialogResizeElement","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","top_1","rectValues","documentWidth","calculatedWidth","left_1","removeResize","DialogUtility","ButtonProps","AnimationSettings","ROOT","RTL","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CLOSE_ICON","DLG_TARGET","SCROLL_DISABLED","DEVICE","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","DLG_USER_ACTION_CLOSED","Dialog","initRender","enableResize","setResize","animationSettings","effect","getMinHeight","initializeValue","dlgClosedBy","headerContent","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","preventFocus","overlayClickEventArgs","focusContent","l10n","checkPositionData","prevOnChange","updatePersistData","dragObj","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","minimumHeight","headerHeight","footerHeight","onResizeStart","dialogObj","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","resizeHandles","directionValue","isModal","resizeBegin","resizing","resizeComplete","boundary","resizeHandler","proxy","createResize","wireWindowResizeEvent","unWireWindowResizeEvent","getFocusElement","buttonObj","btnObj","ftrTemplateContent","contentEle","focusableElements","buttonIndex_1","isTagName","isContentEdit","closeOnEscape","query","primaryButtonEle","buttonModel","setCSSClass","setMaxHeight","initialRender","setzIndex","calculatezIndex","setTargetContent","renderCloseIcon","footerTemplate","setButton","setFooterTemplate","allowDragging","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","parentEle","refElement","popupObj","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","activeEle","blur","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","dialogConHeight","resizeIcon","zIndexValue","setPopupPosition","handleContent","dragEventArgs","buttonContent","buttonType","btn","footerBtn","buttonClickHandler","isFlat","innerContentElement","HTMLElement","setTemplate","templateFn","templateProps","templateValue","sanitizeHelper","isVue","dialogItem","isContent","headerEle","createHeaderContent","showCloseIcon","closeIcon","closeIconBtnObj","closeIconTitle","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","msGetRegionContent","bindEvent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","currentzIndex","windowResizeHandler","isReact","getDimension","isFullScreen","fullScreen","eventArgs_1","beforeOpenArgs","openAnimation","dialogOpen","isInteracted","closedBy","beforeCloseArgs","closeAnimation","getButtons","createDialog","dialogObject","formOptions","isDraggable","formButtonModel","buttonPropModel","buttonProps","alert","alertDialogObj","dialogElement","alertButtonModel","okButton","setAlertButtonModel","alertOptions","confirm","confirmDialogObj","okButtonModel","cancelButtonModel","cancelButton","setConfirmButtonModel","confirmOptions","DialogRenderer","dlgObj","beforeOpen","beforeClose","beforeOpenCallback","RichTextEditor","showCharCount","fileManagerSettings","updateEnable","eventInitializer","isFocusOut","isRTE","defaultResetValue","isResizeInitialized","onBlurHandler","blurHandler","onFocusHandler","focusHandler","onResizeHandler","clickPoints","initializeServices","setContainer","persistData","originalElement","valueTemplate","invalidAttr","rteOuterWrapper","getID","currentClassList","focusOut","txt","executeCommand","commandName","internalValue","htmlPurifier","Clear","tool","undo","getUndoRedoStack","maxLength","currentInsertContentLength","tempElem","totalLength","getText","formatPainterSettings","formatPainterAction","execCommand","htmlEditorModule","tableSettings","imageValue","wrapTemp","audioValue","insertVideoSettings","linkValue","divNode","renderModule","sourceCodeModule","RTERender","enableXhtml","getXhtml","audioElm","audioWrapElem","audioInnerWrapElem","videoElm","videoWrapElem","cleanList","currentStartContainer","currentEndContainer","currentStartOffset","isSameContainer","closestLI","isDetached","collapsed","currentLast","setSelectionText","restrict","regEx","pointer","removeNodeArray","FormatPainterEscapeAction","formatPainterModule","previousAction","placeHolderWrapper","autoResize","range_1","allowedKeys","onKeyHandler","selfEncloseValidation","sanitizeHtml","inputVal","triggerEditArea","touch","notifyMouseUp","touchData","prevClientX","prevClientY","showOnRightClick","closestTable","selection","ensureModuleInjected","onCopy","onCut","onPaste","pasteArgs","getData","args_1","pasteCleanupModule","args_2","htmlValue","getAsFile","isWordPaste","clipboardAction","timeInterval","destroyDependentModules","allClassName","removeHtmlAttributes","removeAttributes","undoRedoManager","wrapperElm","selectedHtml","getRangeAt","cloneContents","showInlineToolbar","currentRange","targetElm","getClientRects","showInlineQTBar","hideInlineToolbar","hideInlineQTBar","nVal","updatePanelValue","countModule","refreshToolbarOverflow","setHeight","setCssClass","oldCssClass","updateRTL","frameSetting","resources","files","removeSheets","setIframeSettings","renderCount","wireContextEvent","unWireContextEvent","srcList","getTextArea","childElementCount","updateReadOnly","editPanel","unbindEvents","print","printWind","printArgs","printingArgs","resizeTo","screen","availWidth","availHeight","printWindow","blinks","reference","fullScreenModule","muteToolbarUpdate","enableTBarItems","removeToolbarItem","removeTBarItems","enterKeyModule","styleSrc","scriptSrc","InjectSheet","scriptSheet","scriptEle","createScriptElement","styleEle","createStyleElement","isPropertyChange","compiledTemplate","displayTempElem","renderTemplates","appendElem","innerHtml","updateResizeFlag","getInsertImgMaxWidth","editEle","editEleMaxWidth","imgPadding","paddingLeft","paddingRight","getInsertVidMaxWidth","vidPadding","heightValue","rteHeightPercent","topValue","heightPercent","cntEle","rteHeight","tbHeight","getToolbarHeight","rzHandle","rzHeight","expandPopHeight","getExpandTBarPopHeight","tbWrapHeight","getHtml","currentValue","showSourceCode","getCharCount","htmlText","showDialog","InsertLink","InsertImage","InsertAudio","InsertVideo","InsertTable","closeDialog","getBaseToolbar","getInlineBaseToolbar","preventDefaultResize","preventImgResize","defaultResize","scrollHandler","contentScrollHandler","cloneValue","saveInterval","autoSaveOnIdle","updateValueOnIdle","onDocumentClick","toolbarItem","getUpdatedValue","tableModule","removeResizeElement","isValueChangeBlurhandler","updateIntervalValue","idleInterval","markdown","status_1","getUndoStatus","redo","rteElement","trg","documentNode","wireScrollElementsEvents","scrollParentElements","contextHandler","touchModule","EJ2Touch","tapHold","touchHandler","unWireScrollElementsEvents","closestElem","onSelection","resetHandler","setAutoHeight","iframeElement_1","arrayKey","formElement","editorKeyDown","onIframeMouseDown","defaulthtmlkeys","delayUpdate","ComponentBase","mountingState","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","isshouldComponentUpdateCalled","isCreated","refreshChild","canDelayUpdate","renderReactComponent","portals","refreshProperties","reactElement","updateProperties","silent","dProps","statelessTemplates","propkey","isClassName","htmlattributes","compareValues","clsName","propsClsName","dpropsClsName","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","controlAttributes","reactUid","clsList","syntheticEvent","value1","value2","tempVal","tempVal2","compareObjects","oldProps","newProps","lenSimilarity","diffArray","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","propInstance","changedProps_1","changes","propInstance_1","appendReactElement","portal","templateNames","tempPortal","propIndexCount","childCache","childs_1","ifield","getChildType","getChildProps","isDirective","moduleName","subChild","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","classObj","ComplexBase","stringCompiler","templateElement","cEle","actTemplate","actData","rele","derivedClass","RichTextEditorComponent","statelessTemplateProps","immediateRender","baseClass","CLS_DISABLE","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","HScroll","browser","browserCheck","customStep","ieCheck","uniqueId","swipe","swipeHandler","scrollEle","createNavIcon","setScrollState","scrollStep","scrollDiv","innerEle_1","ele_1","scrollItems","nav","disable","navEles","rightOverlayEle","clsRight","rightEle","navItem","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","onKeyPress","keyTimer","keyTimeout","eleScrolling","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","trgt","scrollDis","isContinuous","rootEle","frameScrollRequest","swipeEle","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","buildTag","scrollBar","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","swipeElement","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLBAR","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDEDPOPOPEN","Item","Toolbar","resizeContext","moveLeft","moveRight","moveUp","moveDown","popupOpen","popupClose","tab","home","isAngular","btnItems","tempId","destroyItems","lastElementChild","trgtEle","ctrlTem","popObj","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollModule","isVertical","isExtendedOpen","popupPriCount","clickHandler","allowKeyboard","wireKeyboardEvent","keyModule","keyActionHandler","docKeyDown","updateTabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","destroyScroll","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","popupCheck","extendedPopup","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","tbrItems","itemObj","isPopupElement","popupNav","popupClickHandler","clickedArgs","getElementOffsetY","renderControl","ariaAttr","renderItems","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","separator","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","showAlwaysInPopup","changeOrientation","refreshOverflow","initScroll","innerItems","checkOverflow","itemWidthCal","getScrollCntEle","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerEle","innerNav","vertical","createPopupIcon","innerNavDom","checkPriority","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupEle","popupInit","eleStyles","popup","tbarPopupHandler","isOpen","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","popupOffset","inEle","pre","eleOffset","popPriority","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","tbarPriRef","indx","sepPri","des","elWid","wid","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","eleSplice","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","isEnable","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","removeItemByIndex","eleIdx","indexAgn","btnItem","templateRender","templateProp","isComponent","itemType","templateCompiler","tempArray","buttonRendering","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","tempDom","tooltipText","itemClick","showTextOn","sTxt","getDataTabindex","curEle","multirowele","updateHideEleTabIndex","eleIndex","nextEle","tEle","changedProb","newProperty","popupPriCheck","booleanCheck","itemCol","hideItem","upDownKeyHandler","defaultIdx","liIdx","selectedLi","isValidLI","DropDownButton","isPopupCreated","toggle","canOpen","openPopUp","closePopup","newItem","createItems","isUniqueId","len_1","getULElement","getTargetElement","appendItems","showIcon","hasIcon","tempItem","createAnchor","getPopUpElement","blankIcon","blankIconList","iconLi","cssProp","setBlankIconStyle","appendArrowSpan","setActiveElem","isColorPicker","createPopupOnClick","prevElem","activeElem","popupUnWireEvents","destroyPopup","keyBoardHandler","delegateMousedownHandler","mousedownHandler","popupWireEvents","popupElement","closeActionEvents","focusoutHandler","rippleFn","keyEventHandler","getLI","liTarget","selectEventArgs","popupElem","splitButton","observedArgs","ul_1","openArgs","focusEle","ul_2","arrowSpan","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","POPUP_CONTAINER","Tooltip","mouseMoveEvent","mouseMoveTarget","isBodyContainer","formatPosition","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tipClass","tooltipEle","renderPopup","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","findTarget","needTemplateReposition","tooltipEventArgs","opensOn","clear","tooltipEleWidth","tooltipEleHeight","arrowEle","tipWidth","tipHeight","tipAdjust","showTipPointer","tipHeightAdjust","tipWidthAdjust","updateTipPosition","selEle","adjustArrow","leftValue","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","renderContent","tooltipContent","tempArr","tempFunction","enableHtmlParse","nodeList","templateFunction","isSticky","tipClose","ICON","onStickyClose","addDataTooltipId","removeDataTooltipId","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","closeDelay","targetList_1","ctrlId","target_1","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","openDelay","beforeRenderArgs","beforeRenderCallback","tooltipBeforeRender","tooltipAfterRender","PopupAnimation","appendContainer","ctrlObj","openAnimation_1","wireMouseEvents","viewContainerRef","affectedPos","checkCollideTarget","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","arrowleft","newPos","offsetType","windowCollision","isTooltipOpen","tooltipHide","popupHide","unwireMouseEvents","tooltipHover","tooltipMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","targetsList","touchEnd","triggerList_1","getTriggerList","wireFocusEvents","targetList","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","currentTarget_1","getNumericObject","symbPattern","TAGNAME","SplitButton","initWrapper","createPrimaryButton","createSecondaryButton","secondaryBtnObj","setAria","btnModel","primaryBtnObj","btnElem","dropDownBtnModel","callBackPromise","Deferred","primaryBtnClickHandler","btnKeyBoardHandler","altdownarrow","floatType","isBindClearAction","bindInitialEvent","checkInputValue","floatLabelType","getParentNode","calculateWidth","inputValue","_focusFn","_blurFn","wireFloatingEvents","createFloatingInput","inputObject","internalCreateElement","makeElement","createInputContainer","customTag","floatLinelement","floatLabelElement","encodePlaceHolder","inputWrap","updateLabelState","checkFloatLabelType","updateIconState","wireClearBtnEvents","readOnly","validateLabel","tagClass","spanEle","oldClass","elementWidth","setPlaceholder","setReadonly","isReadonly","isRtl","setEnabled","inputContainer","disabledAttrs","considerWrapper","addAttributes","setClearButton","isClear","clearButton","insertAdjacentElement","createClearButton","createSpanElement","labelSpanElement","_internalRipple","isRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","createIconEle","iconClass","prependSpan","innerWrapper","appendSpan","validateInputType","createInput","bindClearAction","showClearButton","setPropertyValue","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","setRipple","addIcon","internalCreate","result_2","SPINICON","SPINUP","ERROR","INCREMENT","DECREMENT","INTREGEXP","NUMERIC_FOCUS","wrapperAttributes","selectionTimeOut","NumericTextBox","preventChange","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","angularTagName","formEle","localeText","incrementTitle","decrementTitle","isValidState","inputStyle","inputName","cultureInfo","initCultureInfo","initCultureFunc","prevValue","updateHTMLAttrToElement","checkAttributes","inputEleValue","validateMinMax","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","strictMode","trimValue","decimals","roundNumber","hiddenInput","elementPrevValue","isDynamic","attributes_1","setNumber","minValue","maxValue","stepValue","updatedCssClassValue","getNumericValidClassList","inputWrapper","updateHTMLAttrToWrapper","updateDataAttribute","pro","updateCssClass","newClass","numericClassName","updatedClassValue","numericStyle","spinDown","spinUp","wireSpinBtnEvents","MAX_VALUE","formattedValue","operation","isInteract","isFocused","performAction","raiseChangeEvent","checkErrorClass","bindClearEvent","setElementValue","keyupEvent","resetFormHandler","setSpinButton","focusOutHandler","keyDownHandler","keyUpHandler","inputHandler","changeHandler","pasteHandler","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","changeEventArgs","previousValue","isInteraction","beforeUpdate","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","setSelectionRange","cursorPosChanged","validateDecimalOnType","parseValue","parsedValue","localChange","previous","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","stepCount","roundValue","precision","divide","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","validateState","elementValue","serverDecimalSeparator","EXPREGEXP","valueString","result1","result2","currentChar","isAlterNumPadDecimalChar","fractionRule","mouseWheel","rawEvent","focusEventArgs","formatValue_1","blurEventArgs","value_1","focusEvent","getElementData","mouseUpClick","touchEvent","floatLabelTypeUpdate","increment","decrement","attrArray","updateSpinButton","updateClearButton","propValue","TicksData","ColorRangeData","LimitData","TooltipData","Slider","horDir","verDir","rangeBar","transitionOnMaterialTooltip","scaleTransform","customAriaText","isDragComplete","initialTooltip","isElementFocused","tickElementCollection","tooltipFormatInfo","ticksFormatInfo","formChecker","formResetValue","internationalization","tooltip","ticks","formatString","formatInfo","formatValue","makeRoundNumber","elementVal","fractionalToInteger","noOfDecimals","tens","setZindex","getTheme","sliderContainer","tooltipElement","showOn","sliderTrack","getThemeInitialization","setHandler","createRangeBar","limits","createLimitBar","setOrientClass","showButtons","setButtons","rangeValueUpdate","previousVal","checkHandleValue","previousChanged","setLimitBar","placement","renderScale","renderTooltip","isMaterial","isBootstrap","isBootstrap4","isTailwind","isBootstrap5","isFluent","isMaterialTooltip","orientation","firstElementClassName","limitBarFirst","limitBarSecond","firstHandle","secondHandle","setAriaAttributes","customValues","createSecondHandle","createFirstHandle","materialHandle","wireFirstHandleEvt","handleFocus","transitionEnd","handleOver","handleLeave","wireSecondHandleEvt","handleStart","handlePos1","enableAnimation","getHandle","tooltipToggle","closeTooltip","handleFocusOut","focusSliderElement","sliderBarClick","sliderBarMove","sliderBarUp","preDir","setBarColor","tooltipValue","setTooltipContent","tooltipObj","addTooltipClass","setAriaAttrValue","setPreviousVal","ariaContent","handle1","handleVal1","handle2","handleVal2","oldCss","newCss","getTooltipTransformProperties","previousTooltipClass","tooltipPlacement","tooltipBeforeOpen","setTooltipTransform","tooltipCollision","tooltipOffsetValue","materialTooltipEventCallBack","wireMaterialTooltipEvent","tooltipPositionCalculation","transformProperties","translate","openMaterialTooltip","refreshTooltip","tooltipContentElement","closeMaterialTooltip","tooltipTarget","checkTooltipPosition","tooltipClass","tooltipCollidedPosition","beforeCollision","tooltipBeforeClose","initializeTooltipProps","tooltipShowOn","firstBtn","secondBtn","buttonTitle","enabledRTL","buttonFocusOut","repeatButton","hVal","handleValueUpdate","getLimitCorrectedValues","changeHandleValue","repeatHandlerMouse","buttonClick","repeatInterval","materialChange","focusHandle","repeatHandlerUp","changeEvent","customTickCounter","bigNum","tickCount","orien","isAndroid","smallStep","showSmallTicks","largeStep","steps","islargeTick","tickWidth","largestep","startValue","createTick","formatTicksValue","decimalPoints","ticksAlignment","triggerEvent","ticksWrapper","tickElements","scaleAlignment","spanElement","tickText","tickElement","tickValuePosition","otherChild","other","ariaValueText","isTickFormatted","valuenow","activeHandle","getLimitValueAndPosition","minStart","minEnd","maxStart","maxEnd","buttonUp","openTooltip","setRangeBar","handlePos2","checkValidValueAndPos","checkHandlePosition","setLimitBarPositions","fromMinPostion","fromMaxpostion","toMinPostion","toMaxpostion","fromPosition","toPosition","limitBar","preHandlePos1","setHandlePosition","validateRangeValue","setRangeValue","modifyZindex","updateRangeValue","rtl","preHandlePos2","values_1","tempStartEnd","startHandleFixed","endHandleFixed","xyToPosition","stepValueCalculation","percentStep","remain","addition","positionToValue","handlepos","handleVal","focusedElement","behindElement","eventX","eventY","checkRepeatedValue","handleValueAdjust","handleValue","handleNumber","minDiff","dragRangeBarMove","xPostion","yPostion","rangeBarDragged","secondPartRemain","firstPartRemain","valueAndPostion","dragRangeBarUp","wireButtonEvt","sliderFocusOut","rangeBarMousedown","elementClick","onresize","hover","formResetHandler","changeSliderType","updateConfig","changeRtl","limitsPropertyChange","setMinMaxValue","setTooltip","trackPosition","trackClassName","colorRange","startingPosition","endPosition","trackContainer","APPLY","CANCEL","CURRENT","CTRLBTN","CTRLSWITCH","DISABLED","FORMATSWITCH","HANDLER","HEX","HIDEHEX","HIDEOPACITY","HIDERGBA","HIDEVALUE","HIDEVALUESWITCH","HSVAREA","HSVCONTAINER","INPUTWRAPPER","MODESWITCH","NOCOLOR","OPACITY","PALETTES","PALETTECONTENT","PICKERCONTENT","PREVIEW","PREVIOUS","SHOWVALUE","SELECT","SPLITPREVIEW","TILE","presets","ColorPicker","Apply","ModeSwitcher","inline","createWidget","createSplitBtn","enableOpacity","getWrapper","noColor","slicedValue","initialInputValue","tileRipple","ctrlBtnRipple","createPalette","firstPaletteFocus","createPicker","getDragHandler","isRgb","createCtrlBtn","toggleDisabled","refreshPopupPos","splitBtn","onOpen","hex","rgba","convertToRgbString","hexToRgb","preview","getPopupEle","popupInst","getPopupInst","bindCallBackEvent","observeOpenArgs","observedCloseArgs","onPopupClose","destroyOtherComp","presetColors","paletteGroup","appendElement","appendPalette","setNoColor","rgb","hsv","rgbToHsv","colors","refEle","row","roundedColor","palette","presetName","addTileSelection","noColorEle","insertPos","hsvContainer","dragHandler","setHsvContainerBg","setHandlerPosition","createSlider","createDragTooltip","getHsvContainer","hsvToRgb","hsvArea","sliderPreviewWrapper","createPreview","sliderWrapper","slider","hueSlider","hueChange","createOpacitySlider","opacitySlider","opacityChange","opacityBgTrack","updateOpacitySliderBg","opacityEle","background","convertToOtherFormat","pValue","rgbToHex","cValue","updateOpacityInput","updatePreview","opacityTextBoxInst","previewContainer","colorValue","isPicker","createNumericInput","numericInput","appendValueSwitchBtn","hexInput","appendOpacityValue","valueSwitchBtn","formatSwitchHandler","btnWrapper","controlBtnWrapper","appendModeSwitchBtn","getTooltipInst","setTooltipOffset","convertToHsvString","updateHsv","isKey","updateInput","removeTileSelection","convertRgbToNumberArray","pickerKeyDown","ctrlBtn","ctrlBtnKeyDown","handlerDown","addCtrlSwitchEvent","previewHandler","paletteClickHandler","paletteKeyDown","ctrlSwitchBtn","triggerChangeEvent","handlerDragPosition","enterKeyHandler","observedcloseArgs","prob","setHsv","handlerMove","handlerEnd","switchToPalette","ctrlBtnClick","noColorTile","switchToPicker","grpEle","selectedEle","tiles","prevSelectedEle","tilePosition","keySelectionChanges","newEle","cIdx","emptyCount","inputValueChange","isPopupOpen","numericElemColl","tooltipInst","bigInt","changeModeSwitcherProp","ctrlSwitchWrapper","changeShowBtnProps","ctrlBtnWrapper","changeValueProp","setInputEleProps","changeDisabledProp","changeCssClassProps","popupWrapper","changeRtlProps","changePaletteProps","changeOpacityProps","count_1","ToolbarRenderer","popupOverlay","onPopupOverlay","removePopupContainer","toolbarBeforeCreate","toolbarCreated","toolbarClicked","dropDownSelected","dropDownOpen","listEle","popupModal","dropDownClose","popupContainer","renderToolbar","rteToolbarObj","beforeCreate","created","renderDropDownButton","beforeItemRender","renderListDropDown","itemName","inlineEle","currentDropdown","setIsModel","paletteSelection","dropDownArgs","colorbox","borderBottomColor","renderColorPickerDropDown","colorPicker","defaultColor","initialBackgroundColor","colorpickerValue","closestElement","setColorPickerContentWidth","pickerRefresh","dropElement","onmousedown","onkeydown","colorPickerContent","beforeTileRender","colorPickerArgs","beforeModeSwitch","toolbarPanel","BaseToolbar","renderFactory","itemConfigs","setRtl","getClass","getTemplateObject","getItems","proxy_1","callback_1","tbItems_1","shortCutKey","getToolbarOptions","toolbarRenderer","DropDownButtons","initializeInstance","beforeRender","dropdownContent","renderDropDowns","containerType","tbElement","formatOLItem","numberFormatListDropDown","formatULItem","bulletFormatListDropDown","formatItem","fontItem","getEditNode","fontsize","renderAlignmentDropDown","renderDisplayDropDown","rowDropDown","columnDropDown","cellDropDown","verticalAlignDropDown","tableStylesDropDown","getUpdateItems","dropDownItems","fontItems","tableRowsDropDown","tableColumnsDropDown","tableCellVerticalAlignDropDown","displayDropDown","imageAlignDropDown","removeDropDownClasses","destroyDropDowns","updateCss","dropDownObj","ToolbarAction","renderSelection","tableQTBar","listStyle","listImage","isToolbar","isTransformChild","editableElement","toolbarBindEvent","keyBoardModule","toolBarKeyDown","createToolbarElement","tbWrapper","getToolbarMode","tbMode","Scrollable","checkToolbarResponsive","tBarMode","MultiRow","checkIsTransformChild","transformElements","toggleFloatClass","isBody","isFloat","floatOffset","floatingToolbarOffset","scrollParentRelativeTop","trgHeight","bodyStyle","paddingTop","scrollParentYOffset","scrollParentRect","scrollParentTop","divEle","iframeEle","showFixedTBar","hideFixedTBar","addTBarItem","prefixId","updateToolbarStatus","hideScreen","popHeight","expandPopup","isToolbarDestroyed","destroyToolbar","toolbarActionModule","getDOMVisibility","focusChangeHandler","dropDownBeforeOpenHandler","tbFocusHandler","activeElm","isToolbaractive","tbKeydownHandler","toolbarClickHandler","extendedTbar","onRefresh","refreshToolbar","TEXTBOX_FOCUS","containerAttr","TextBox","isHiddenInput","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","isBlank","multiline","textarea","globalize","apiAttributes","attrs_1","autoCompleteTxt","getInputValidClassList","setInitialValue","updatedClassValues","inputClassName","resetForm","animationHandler","resetValue","interaction","resetInputHandler","globalTimeOut","DEFT_MAT_WIDTH","DEFT_MAT3_WIDTH","DEFT_FAB_WIDTH","DEFT_FLUENT_WIDTH","DEFT_BOOT_WIDTH","DEFT_BOOT4_WIDTH","DEFT_BOOT5_WIDTH","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_MATERIAL3SPIN","CLS_FABRICSPIN","CLS_FLUENTSPIN","CLS_TAILWINDSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_BOOT5SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINARC","CLS_SPINLABEL","CLS_SPINTEMPLATE","spinTemplate","spinCSSClass","createSpinner","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","defaultSize","calculateRadius","setTheme","labelEle","createLabel","replaceContent","innerContainer","random_generator","create_material_element","mat_calculate_attributes","createMaterialSpinner","createMaterial3Spinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","createFluentSinner","svgBoot","viewBoxValue","defaultRadius","bootCircle","create_bootstrap_element","rad","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","createBootstrap5Spinner","createTailwindSpinner","generateSeries","series","formSeries","combine","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","strokeSize","getStrokeSize","mat_animation","updatePath","getDashOffset","createCircle","easeAnimation","transformOrigin","drawArc","timestamp","timecount","innerConainer","centerX","centerY","defineCircle","endArc","defineArc","angle","radians","showSpinner","showHideSpinner","isHide","spinnerWrap","spinWrapCollection","svgEle","isAnimate","globalObject","globalVariables","timeOutVar","startMatAnimate","boot_animate","animateBootstrap","hideSpinner","INPUT_WRAPPER","DROP_AREA","LIST_PARENT","FILE","STATUS","FILE_NAME","FILE_TYPE","FILE_SIZE","REMOVE_ICON","DELETE_ICON","SPINNER_PANE","ABORT_ICON","RETRY_ICON","DRAG_HOVER","PROGRESS_WRAPPER","PROGRESSBAR","PROGRESSBAR_TEXT","UPLOAD_INPROGRESS","UPLOAD_SUCCESS","UPLOAD_FAILED","TEXT_CONTAINER","VALIDATION_FAILS","RTL_CONTAINER","ICON_FOCUSED","PAUSE_UPLOAD","RESUME_UPLOAD","RESTRICT_RETRY","wrapperAttr","FORM_UPLOAD","INVALID_FILE","FilesProp","ButtonsProps","AsyncSettings","Uploader","initialAttr","uploadedFilesData","base64String","allTypes","pausedData","uploadMetaData","btnTabIndex","disableKeyboardNavigation","actionCompleteCount","selectedFiles","uploaderName","fileStreams","newFileRef","isFirstFileOnSelection","dragCounter","fileList","filesData","uploaderOptions","setExtensions","clearAll","setControlStatus","setMultipleSelection","setRTL","reRenderFileList","browse","renderButtonTemplates","unBindDropEvents","updateDropArea","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","keyValue","uploadButton","listParent","createFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","Browse","Upload","invalidFileName","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","readyToUploadMessage","pauseUpload","resume","retry","fileUploadCancel","invalidFileSelection","totalFiles","formRendered","browserName","directoryUpload","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","uploadButtonClick","clearButtonClick","uploadText","clearText","dropAreaWrapper","setDropArea","clearData","files_1","fileData","rawFile","validationMessages","minSize","maxSize","statusCode","allowUpload","showFileList","sequentialUpload","dropTextArea","dropArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","uploadStyle","newAttr","createAttribute","setAttributeNode","checkAutoUpload","sequenceUpload","isFileListCreated","updatedOldCssClass","browseButtonClick","onSelectFiles","removeFocus","metaData","getCurrentMetaData","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dragHover","onDragLeave","onPasteFile","onDragEnter","dropEffect","pasteFile","renderSelectedFiles","getSelectedFiles","liElement","allFiles","getFilesData","nameElements","selectedElement","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","removeFilesData","customTemplate","getLiElement","removeUploadedFile","removeDirectly","ajax","asyncSettings","removeUrl","removingEventCallback","removeCompleted","removeFailed","postRawFile","updateFormData","customFormData","customData","updateCustomheader","_loop_2","rootElement","statusElement","getFilesFromFolder","filesEntries","checkDirectoryUpload","_loop_3","webkitGetAsEntry","files_2","fileObj","isDirectory","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","pushFilesEntries","_loop_4","this_2","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","FileReader","readAsDataURL","directory","isModified","modifiedFilesData","progressInterval","isCanceled","updateInitialFileDetails","sanitizeFile","encodedFileName","checkExtension","_internalRenderSelect","fileDetails","getFileType","webkitRelativePath","validatedFileSize","fileSource","dataFiles","updateSortedFileList","raiseActionComplete","allowFormUpload","singleUpload","previousListClone","added","removedList_1","oldList","createParentUL","dropFiles","extensions_1","extension","fileSize","minSizeError","maxSizeError","isPreLoadFile","isPreload","createCustomfileList","fileData_1","listElement","uploadTemplateFn","templateComplier","liTempCompiler","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","fileType","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","iconElement","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","isValid","fileData_6","formCustomFileList","isSelectedFile","fileData_7","textElement","fileExtension","preventActionComplete","getSlicedName","nameElement","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressBar","progressbarInnerWrapper","progressbarText","updateProgressbar","changeProgressValue","progressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","removecanceledFile","renderFailureState","removeProgressbar","deleteIcon","pauseButton","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","spinnerEle","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","callType","progressAnimation","animateProgressBar","extensions","uploadTemplate","isMutiple","fileIndex","chunkSize","chunkIndex","blob","retryCount","sendRequest","totalChunk","chunkUploadComplete","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","removeIcon","checkChunkUpload","requestResponse","updateMetaData","sendNextRequest","name_2","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","retryElement","clearIcon","progressVal","totalChunks","abortIcon","sortedFilesData","sortedFileNames_1","name_3","attributes_2","uploadFiles_1","uploadFiles","serverReadFileBase64","totalCount","reader","contents","uploadFileCount","getFileRead","fileCount","getFileInfo","uploadFilesRequest","chunkEnabled","name_4","spliceFiles","liIndex","beforeEventArgs","isLiRemoved","removingFiles_1","validUrl","_loop_5","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","CHECK","FRAME","INDETERMINATE","LABEL","RIPPLE","RIPPLECHECK","RIPPLEINDETERMINATE","CheckBox","isMouseClick","clickTriggered","validCheck","changeState","isInitialize","frameSpan","indeterminate","updateVueArrayModel","initialCheckedValue","setDisabled","setHiddenInput","labelPosition","setText","labelMouseDownHandler","labelMouseUpHandler","rippleElem","labelWrap","updateHtmlAttributeToWrapper","formElem","setEditFrameFocus","iframe","Image","isImgUploaded","isAllowedTypes","mouseX","deletedImg","rteID","dialogRenderObj","onWindowResize","showImageQuickToolbar","onToolbarAction","caption","deleteImg","insertImgLink","insertAltText","editAreaClickHandler","alignmentSelect","afterRender","imagePaste","dragDrop","dragEnter","dragOver","imageClick","undoStack","onCutHandler","currentObj","checkBoxObj","widthNum","heightNum","uploadObj","contentElem","outline","resizeBtnInit","imgEle","getPointX","prevSelectedImgEle","imgResizeDiv","imageResize","getPointY","stopImmediatePropagation","quickToolObj","imageQTBar","hidePopup","resizeBtnStat","topLeft","topRight","botLeft","botRight","resizeStartArgs","cancelResizeAction","imgResizePos","resizeImgDupPos","calcPos","imgWid","imgHgt","borWid","devWid","elementOffset","parentOffset","doc","setAspectRatio","expectedX","expectedY","resizeByPercent","finalWidthByPerc","pixToPerc","currentWidth","outlineWidth","expected","imgDupMouseMove","resizingArgs","mouseY","imgDupPos","openImgLink","editImgLink","removeImgLink","selectParent","selectNode","selectParentEle","linkUpdate","inputDetails","restore","isCapLink","captionEle","insertElement","save","selectNodeEle","isCursor","getNodeCollection","isCursor_1","checkImageBack","checkImageDel","getParentNodeCollection","removeResizeEle","imageRemovePost","openDialog","isInternal","markdownSelection","getSelectedText","alignImage","break","imageWithLinkQTBarItemUpdate","toolbarElement","newItems","addQTBarItem","isNotify","setSelectionContents","showPopup","hideImageQuickToolbar","imagDialog","linkWrap","linkUrl","linkTarget","inputLink","linkOpenLabel","linkargs_1","selfImage","insertlink","altText","altWrap","altHeader","getAlt","inputAlt","altArgs_1","insertAlt","isUrl","captionClass","absoluteUrl","baseURI","removingImgName","triggerPost","File","contenteditable","imgWrap","imgInner","imgCaption","imgSizeHeader","dialogContent","imgsizeInput","selectObj_1","insertSize","imgDialog","imgInsert","imglinkCancel","imgHeader","selectObj","dialogModel","insertImageUrl","cancelDialog","removing","imgUpload","linkHeader","linkHeaderText","imageUrlPopup","inlineQTBar","imgUrl","placeUrl","inputUrl","spellcheck","matchUrl","imgHeight","imgWidth","imgSizeWrap","widthVal","changedWidthValue","heightVal","changedHeightValue","inputWidthValue","inputHeightValue","dialogEle","uploadParentEle","deviceImgUpMsg","imgUpMsg","spanMsg","btnEle","autofocus","browserMsg","btnClick","fileSelect","selectArgs","beforeUploadArgs","uploadEle","allowedTypes","reader_1","saveFormat","createObjectURL","beforeUpload","currentRequestHeader","customFormDatas","uploading","failure","effectAllowed","imgElement","isImgOrFileDrop","caretRangeFromPoint","rangeParent","rangeOffset","getDropRange","insertDragImage","startRange","setRange","startCharIndexCharacter","rangeRect","activePopupElement","imgFiles","imgType","onSelect","imgArgs_1","validFiles","imageTag","uploadMethod","dragEvent","isUploading","refreshPopup","canceling","imageUploadingArgs","uploadFailure","uploadSuccess","selectNodeContents","reader_2","showPopupToolBar","imageSrc","createQTBar","ImageToolbar","linkDialog","showLinkQuickToolbar","removeLink","linkQTBar","parentTop","parentLeft","linkTop","linkLeft","linkPos","hideLinkQuickToolbar","getAnchorNode","textArea","linkWebAddress","linkDisplayText","linkTooltip","urlPlace","textPlace","linkDialogEle","linkContent","htmlTextbox","linkText","linkTitle","selectText","linkInsert","linkCancel","selfLink","checkUrl","linkEle","enableAutoUrl","argsValue","selectedNode","Formatter","saveSelection","isKeyboardVideoInsert","getAncestorNode","commonAncestorContainer","action_1","itemCollection","isTableModule","ensureInsideTableList","enterAction","selectType","formatPainterCopyAction","callbackArgs","undoRedoStack","quickTBarObj","IMAGE","AUDIO","VIDEO","TABLE","LINK","INSERT_ROW","INSERT_COLUMN","DELETEROW","DELETECOLUMN","REMOVETABLE","TABLEHEADER","TABLE_VERTICAL_ALIGN","TABLE_MERGE","TABLE_VERTICAL_SPLIT","TABLE_HORIZONTAL_SPLIT","ALIGNMENT_TYPE","INDENT_TYPE","DEFAULT_TAG","BLOCK_TAGS","IGNORE_BLOCK_TAGS","TABLE_BLOCK_TAGS","SELECTION_TYPE","INSERTHTML_TYPE","INSERT_TEXT_TYPE","CLEAR_TYPE","SELF_CLOSING_TAGS","NodeSelection","startNodeName","endNodeName","saveInstance","cloneRange","rootNode","documentFromRange","getNodeArray","collapse","isChildNode","nodeCollection","getNode","getParentNodes","getSelectionNodeCollection","getSelectionNodes","getSelectionNodeCollectionBr","getSelectionNodesBr","getInsertNodeCollection","getInsertNodes","isStart","setRangePoint","constant","endIndex","setSelectionNode","getSelectedNodes","insertParentNode","newNode","surroundContents","htmlKeyConfig","selfClosingTags","markerClassName","DOMNode","currentDocument","ELEMENT_NODE","isLink","rawAttributes","rawAttr","orderRawAttr","attrKey","attrValue","clearAttributes","openTagString","closeTagString","createTagString","isList","isEditable","replaceWith","parseHTMLFragment","referenceNode","wrapInner","unWrap","unWrapNode","getSelectedNode","nodeFinds","existNodes","isEditorArea","getRangePoint","ranges","getPreviousNode","saveMarker","startTextNode","endTextNode","setMarker","startChildNodes","finalNode","getLastTextNode","existNode","textNodes","ensureSelfClosingTag","isTable","parNode","tdNode","createTempNode","getImageTagInSelection","blockNodes","collectionNodes","ignoreTableTag","listNodes","Lists","EVENTS","applyListsHandler","spaceKeyAction","testList","olListRegex","elementStart","testCurrentList","olListStartRegex","currentContent","spaceList","preElement","nextElement","preElemULStart","nextElemULStart","startElementOLTest","preElementOLTest","nextElementOLTest","enterList","hasMediaElem","videoElemList","embedVideoElem","startNodeParent","GetSpliceNode","insertTag","backspaceList","parentList","removeList","firstListBackSpace","commonLIParent","currentLIElem","currentElem","commonAncestor","startEle","endEle","isNested","ignoreDefault","currentAction","getAction","revertList","revertClean","nestedList","cleanNode","prevSibling","noPreviousElement","firstNode","firstNodeOL","siblingListOL","siblingListLI","siblingListLIFirst","nestedElement","nestedElementLI","firstNodeLI","lastSelectionNode","listsNodes","setSelectionBRConfig","allSelectedNode","selectedNodes","currentFormatNodes","previousCurrentNode","preNode","postNode","applyLists","startElem","endElem","isRevert","removeEmptyListElements","checkLists","openTag","closeTag","newTag","replaceHTML","collectionString","listElem","listStyleType","nodesTemp","liParents","contentNodes","findUnSelected","rightIndent","indentElements","childElements","childLI","viewNode","childNode","nodeInnerHtml","emptyUl","emptyLi","InsertMethods","WrapBefore","isAfter","AppendBefore","Wrap","unwrap","NodeCutter","isCollapsed","setStartBefore","setEndAfter","fragment","extractContents","spliceEmptyNode","isRteElm","GetCursorStart","GetCursorRange","cursorRange","TrimLineBreak","GetCursorNode","Formats","applyFormats","endCon","pTag","brNode","startCon","preElem","endPreElem","deleteContent","removeCodeContent","lastEmpty","lastBeforeBr","startParent","paraFocus","isNotEndCursor","referNode","isEnd","insertMarker","brTag","previousSib","setCursorPosition","isEmpty","markerElem","mrkParentElem","focusSelectionParent","tempSpanPElem","tempSpan","isSelectAll","formatsNodes","exeValue","cleanFormats","replaceNode","replaceTag","preFormatMerge","preNodes","ignoreAttr","InsertHtml","Insert","editNode","currentIndex","closestParentNode","closestEle","pasteInsertHTML","sibNode","lasNode","removeEmptyElements","imageFocus","frag","paraElem","isSingleNode","currentBlockNode","getImmediateBlockNode","containsBlockNode","removingComments","allChildNodes","parentElem","insertTempNode","isFirstTextNode","paraElm","contentsDeleted","firstParaElm","nearestAnchor","immediateBlockNode","placeCursorEnd","cursorPos","blockNode","liNode","splitedElm","tableElm","tdElm","borderLeft","borderRight","borderTop","elm","innerElement","findDetachEmptyElem","emptyElements","detachableElement","LinkCommand","linkCommand","createLink","closestAnchor","domSelection","createAchorNode","removeText","createLinkNode","txtArray","inlineNodes","removeNodes","anchorNodes","finalinlineNodes","j_1","cln","j_2","linkNode","containsNode","Alignments","alignments","applyAlignment","getTableNode","isTableAlign","alignmentNodes","imageTags","elementNode","imgObj","imageCommand","Indents","indentValue","applyIndents","indentsNodes","parentNodes","marginLeftOrRight","indentsValue","CLASS_IMAGE_RIGHT","CLASS_IMAGE_LEFT","CLASS_IMAGE_CENTER","CLASS_IMAGE_BREAK","CLASS_CAPTION","CLASS_CAPTION_INLINE","CLASS_AUDIO_INLINE","CLASS_CLICK_ELEM","CLASS_VIDEO_CLICK_ELEM","CLASS_AUDIO","CLASS_VIDEO","CLASS_AUDIO_WRAP","CLASS_EMBED_VIDEO_WRAP","CLASS_AUDIO_FOCUS","CLASS_VIDEO_FOCUS","CLASS_VIDEO_INLINE","ImageCommand","createImage","insertImageLink","openImageLink","editImageLink","removeImageLink","removeImage","insertAltTextImage","imageDimension","imageJustifyLeft","imageJustifyCenter","imageJustifyRight","imageInline","imageBreak","isReplaced","imgElm_1","calculateStyleValue","capImgWrap","textEle","newTextEle","AudioCommand","audioCommand","createAudio","audioEle","audElement","sourceElement","clickElement","audioElm_1","VideoCommand","videoCommand","videoWrapNode","videoClickElem","createVideo","videoDimension","cssFloat","vidElement","isEmbedUrl","videoEle","videoElm_1","editAreaVideoClick","TableCommand","createTable","insertRow","insertColumn","deleteRow","deleteColumn","removeTable","tableHeader","tableVerticalAlign","cellMerge","HorizontalSplit","VerticalSplit","tableMove","table","tblBody","tdWid","rows","cell","removeEmptyNode","emptyLiChild","getSelectedCellMinMaxIndex","selectedCells","curTable","minI","maxI","minJ","maxJ","selectedCellIndex","getCorrespondingIndex","minMaxIndex","FindIndex","startRow","endRow","startColumn","endColumn","isBelow","selectedCell","lastRow","cloneRow","allCells","getCorrespondingColumns","minVal","newRow","isHeaderSelect","tdElement","selectedRow","curCell","curRow","allRows","colIndex","currentTabElm","thTdElm","oldWidth","colTemplate","tBodyHeadEle","rowIndex","deleteIndex","selectedMinMaxIndex","minCol","maxCol","currentRow","currentCell","currentCellIndex","colSpanVal","rowHeadEle","nextFocusCell","sContainer","startChildLength","rowSpanVal","focusTrEle","selectedTable","headerExit","cellCount","colSpanCount","createTHead","deleteTHead","tableCell","verticalAlign","mergeCellContent","minMaxIndexes","getSelectedMinMaxIndexes","firstCell","rowSelectedCells","totalWidth","updateRowSpanStyle","updateColSpanStyle","colValue","colMin","eleArray","updateCellAttribute","rowValue","rowMin","firstIndex","spanCount","correspondingCells","minRow","maxRow","currentRowCol","targetRowCol","activeCell","newCell","activeCellIndex","activeCellRowSpan","avgCount","avgRowIndex","newTrEle","avgWidth","correspondingColumns","activeCellcolSpan","elementArray","colEle","colspan_1","rowSpan","columnIndex","cells","nextCol","highlightCells","startCell","endCell","minRowIndex","maxRowIndex","minColIndex","maxColIndex","minMaxValues","MinMax","activeCellTag","targetCellTag","activeRowIndex","activeColumnIndex","targetRowIndex","targetColumnIndex","activeCellList","activeIndexes","targetIndexes","IsFormatted","getFormattedNode","getFormatParent","isFormattedNode","isBold","isItalic","isUnderline","isStrikethrough","isSuperscript","isSubscript","isFontColor","isFontName","isFontSize","isBackgroundColor","inlineTags","backColor","SelectionCommands","applyFormat","painterValues","isFormatted","isFormat","preventRestore","isFontStyle","currentFormatNode","currentSelector","cursorNode","insertCursorNode","isSubSup","formatNode","insertFormat","removeFormat","applySelection","cursorNodes","cursorFormat","getCursorFormat","emptySpaceNode","brElem","getInsertNode","bgStyle","splitNode","startText","nodeText","isFullNodeSelected","wholeText","nodeTraverse","styleElement","GetFormatNode","nodeArray","priorityNode","getPriorityFormatNode","applyStyles","formatNodeStyles","formatNodeTagName","nodeTraverseCondition","currentNodeElem","curParentElem","liChildContent","isNestedList","nestedListCount","isNestedListItem","num_1","num_2","num_3","toLocaleUpperCase","insertFormatPainterElem","isSameTextContent","getChildNode","fontColorNode","backgroundColorNode","fontNameNode","fontSizeNode","updateStyles","childELemList","blockChildNodes","clonedElement","elemList","lastElement","SelectionBasedExec","InsertHtmlExec","applyHtml","pastedElements","allPastedElements","imgElements","allImgElm","imgElem","ClearFormat","defaultTag","lastText","exactNodes","cloneSelectNodes","clearInlines","reSelection","cloneParentNodes","clearBlocks","selectionNodes","endIndexNode","spliceParent","removeParent","index1","index2","index3","parentIndex","elementIndex","NONVALID_TAGS","NONVALID_PARENT_TAGS","IGNORE_PARENT_TAGS","currentInlineNode","removeInlineParent","ClearFormatExec","applyClear","UndoRedoManager","undoRedoSteps","undoRedoTimer","onAction","currentContainer","changEle","removedContent","MsWordPaste","olData","ulData","ignorableNodes","borderStyle","removableElements","listContents","wordCleanup","wordPasteStyleConfig","allowedStylePropertiesArray","tempHTMLContent","rtfData","pattern4","imageConversion","addListClass","cleanUp","listConverter","styleCorrection","removeUnwantedElements","breakLineAddition","removeClassName","addTableBorderClass","liChildren","allNodes","allTableElm","hasTableBorder","checkVShape","imgSrc","base64Src","imgName","linkRegex","hexConversion","convertToBase64","byteArr","conHexStringToBytes","conBytesToBase64","base64Str","byteArrLen","array3","array3length","array4","picHead","pic","fullImg","elmWithClass","allElements","findDetachElem","brElement","regExpStartElem","regExpEndElem","styleClassObject_1","findStyleObject","removeUnwantedStyle","filterStyles","resultElem","fromClass","styleProperty","valueSplit","changedValue","listClass","olULElems","classStyle","inlineStyle","elmWithStyles","elemStyleProperty","styleValue","styleValues","styleClassObject","tempStyle","classNameCollection","stylesCollection","prevflagState","tempCleaner","level","stNode","collection","currentListStyle","getListContent","startAttr","styleMarginLeft","getlistStyleType","startString","currentClassName","textAlign","listType","nestedLevel","listStyleTypeName","makeConversion","elemColl","temp1","listContent","currentListClass","prevList","pLevel","listCount","pElement","getNamedItem","pushContent","styleNodes","InsertTextExec","insertText","FormatPainterActions","setDeniedFormats","actionHandler","copyAction","pasteAction","escapeAction","generateElement","copyCollection","lastAppendChild","elemCollection","i_1","i_2","elemChild","removeDeniedFormats","newElemLastChild","paintPlainTextFormat","insertFormatNode","deniedFormatsCollection","deniedPropArray","elementsList","classLength","styleLength","attributeLength","findCurrentContext","allowedRulesArray","allowedFormats","getRangeParentElem","rangeParentElem","allowedContext","allAttributes","allStyles","getPropertyPriority","rangeParentELem","nearBlockParentName","getNearestBlockParentElement","isBlockElement","isInValid","validateELementTag","inlineElement","childElem","formatValues","insertBlockNode","cloneListParentNode","lastTextNode","cloneParentNode","after","cleanEmptyLists","startSelectNode","endSelectNode","deniedFormats","makeDeniedFormatsCollection","openParenIndex","closeParenIndex","openBracketIndex","closeBracketIndex","openBraceIndex","closeBraceIndex","attributesList","stylesList","openIndexArray","EditorManager","listObj","formatObj","alignmentObj","indentsObj","linkObj","audioObj","videoObj","selectionObj","inserthtmlObj","insertTextObj","clearObj","tableObj","msWordPaste","formatPaintetrObj","editorKeyUp","onWordPaste","onBegin","HTMLFormatter","updateFormatter","editElement","statusCollection","bold","italic","subscript","superscript","strikethrough","orderedlist","unorderedlist","underline","backgroundcolor","fontcolor","fontname","formats","createlink","insertcode","ToolbarStatus","targetNode","fontName","formatCollection","nodesLength","isNodeChanged","isOrderedList","isUnorderedList","isAlignment","isFormats","isNumberFormatList","isBulletFormatList","HtmlToolbarStatus","toolbarStatus","prevToolbarStatus","onRefreshHandler","tbStatusString","ContentRender","contentPanel","textString","IframeContentRender","iFrameContent","contentDocument","setThemeColor","ColorPickerInput","renderColorPickerInput","targetID","suffixID","fontNode","fontColorPicker","fontColorDropDown","backNode","backgroundColorPicker","backgroundColorDropDown","defaultColorPicker","colorPickerObj","XhtmlValidation","enableXhtmlValidation","ImageTags","RemoveUnsupported","arrayValue","valueTemp","valueDupe","valueOriginal","imgRegexp","imgNodes","RemoveElementNode","rmvNode","parentArray","rmvArray","underlineEle","strongEle","boldEle","RemoveAttributeByName","attrName","hasChildNodes","childEle","HtmlEditor","rangeCollection","isImageDelete","nodeSelectionObj","colorPickerModule","instantiateRenderer","onToolbarClick","onSelectionSave","onSelectionRestore","isTableClassAdded","tableElement","isRootParent","previousLength","currentLength","currentChild","currentChildNode","backSpaceCleanup","deleteCleanup","enableTabKey","textCont","spaceLink","currentRange_1","editorValue","orderedList_1","unOrderedList","isUnOrderedList","rangeElement","oldRangeElement","deleteRangeElement","deleteOldRangeElement","ulListStartRegex","isLiElement","checkNode","getRootBlockNode","getRangeLiNode","getRangeElement","getCaretIndex","preCaretRange","rangeBlockNode","rangeLiNode","httpRegex","wwwRegex","enterSplitText","contentInnerElem","contentWithSpace","spaceBetweenContent","spaceSplit","divElement","splitTextContent","resultSplitContent","splitText","urlText","urlTextRange","imageDialog","clickTimeout","formatterClass","toolbarUpdate","BaseQuickToolbar","isDOMElement","popupRenderer","dropDownButtons","appendPopupContent","popupType","popupId","stringItems","createToolbar","imgWrapper","isAligned","targetOffsetTop","parentOffsetTop","parentData","editTop","tBarElementHeight","editHeight","popWidth","viewPort","contentTop","windowY","windowHeight","bodyRightSpace","beforeQuickToolbarArgs","editPanelTop","editPanelHeight","bodyRight","toolbarAvail","expTBHeight","tBarHeight","showPopupData","viewSourcePanel","tooltipTargetEle","dataContent","removeEleFromDOM","removeQTBarItem","PopupRenderer","quickToolbarOpen","popupPanel","QuickToolbar","formattedItems","getQTBarOptions","popType","renderType","qTBar","initializeQuickToolbars","selectionChangeHandler","keyUpQT","renderQuickToolbars","audioQTBar","videoQTBar","textQTBar","LinkToolbar","TextToolbar","audio","AudioToolbar","VideoToolbar","TableToolbar","renderInlineQuickToolbar","InlineToolbar","deBounce","deBouncer","mouseUpHandler","isIFrame","inlineQTBarMouseDownHandler","onSelectionChange","wireInlineQTBarEvents","unWireInlineQTBarEvents","baseQTObj","baseQuickToolbarObj","setEditorValue","editForm","setEditForm","setMessage","handleFormSubmit","publish","urlSlug","replaceAll","currentDate","articleForm","serverMessages","put","LoadingIndicator","thumbnailImage","LocationsDashboard","locationsTable","newLocationList","AddState","stateForm","setStateForm","stateModal","buttonContainer","AddLocation","fax","locationForm","setLocationForm","setStates","displayStateModal","setDisplayStateModal","sortedStates","handleCloseStateModal","displayLocationsForm","findState","addStates","EditLocation","setLocation","errorLoading","setErrorLoading","authInfo","setAuthInfo","clearAuthInfo","isLoggedIn","LoginForm","accountForm","setAccountForm","authContext","AuthContext","finally","loginFormDisplay","loginForm","logButtonContainer","plain","accountContainer","LogoutForm","Account","ProvidersDashboard","setProviders","handleSort","providersTable","providerId","AddProvider","linkTo","providerForm","setProviderForm","providerFormDisplay","EditProvider","ForgotPassword","setResetForm","emailSent","setEmailSent","resetFormDisplay","ResetPassword","newPassword","confirmPassword","passwordWasReset","setPasswordWasReset","resetData","setResetData","_useSearchParams","TestimonialsDashboard","setItems","displayItems","setDisplayItems","itemsTable","testimonialId","newItemList","AddTestimonial","itemForm","setItemForm","formContent","EditTestimonial","transitionWrapper","transitionSection","Contact","Faq","TeleHealth","Careers","RouteProtector","AddArticle","EditArticle","ToastContainer","linkTitles","adminLinks","minAdminLinks","NavigationBar","linkItems","toggleMenu","setToggleMenu","handleMenuToggle","btnImg","xmark","page","toggleButton","trio","imgLink","scrollTo","setRenderKey","getAuthInfo","checkLoginNotExpired","ContentContainer","ScrollToTop","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","use","Authorization","App","reportWebVitals"],"sourceRoot":""}